【发布时间】:2019-07-21 08:34:23
【问题描述】:
我有多个格式如下的输入文件需要处理。
输入文件路径/tmp/input。
1.1.1.txt
1.1.2.txt
1.1.3.txt
但是,假设(/tmp/outputsmgr)在另一个文件夹中的每个输入文件都有输出文件,如下所示:
1.1.1_output.csv
1.1.2_output.csv
1.1.3_output.csv
问题是:
- 首先,我无法将输出文件写入另一个/不同的文件夹中
- 其次,处理后的所有输入文件数据仅合并到输入文件夹中的一个文件中,如下所示,而不是每个输入文件的单独输出文件
以下所有文件都包含相同的数据,而不是1.1.1.txt 数据应在文件1.1.1_output.csv 中,文件1.1.2.txt 数据应在文件1.1.2_output.csv 中。
1.1.1.txt_output.csv
1.1.2.txt_output.csv
1.1.3.txt_output.csv
如何修改以下代码以获得所需的结果?
import os
import csv
import re
def parseFile(fileName):
# We are using a dictionary to store info for each file
data = list()
# data = dict()
fh = open(fileName, "r")
lines = fh.readlines()[1:]
for line in lines:
line = line.rstrip("\n")
if re.search("sessmgr", line):
splitted = line.split()
temp = dict()
temp["CPU"] = splitted[0]
temp["facility"] = splitted[1]
temp["instance"] = splitted[2]
temp["cpu-used"] = splitted[3]
temp["cpu-allc"] = splitted[4]
temp["mem-used"] = splitted[5]
temp["mem-allc"] = splitted[6]
temp["files-used"] = splitted[7]
temp["files-allc"] = splitted[8]
temp["sessions-used"] = splitted[9]
temp["sessions-allc"] = splitted[10]
# print (splitted[2])
data.append(temp)
# continue;
# print (data)
return data
if __name__ == "__main__":
inputsDirectory = "/tmp/input"
outputDirectory = "/tmp/outputsmgr"
path = os.path.abspath(inputsDirectory)
pathout = os.path.abspath(outputDirectory)
fileLists = ["{0}/{1}".format(path,x) for x in os.listdir(outputDirectory)]
fileList = ["{0}/{1}".format(path,x) for x in os.listdir(inputsDirectory)]
# print(fileList)
csvRows = []
for file in fileList:
newRow = parseFile(file)
csvRows.append(newRow)
# print(csvRows)
for files in fileList:
outputFile = "output.csv"
csvfile = open(os.path.join(files + "_" + outputFile), 'w')
fieldnames = ["CPU",
"facility",
"instance",
"cpu-used",
"cpu-allc",
"mem-used",
"mem-allc",
"files-used",
"files-allc",
"sessions-used",
"sessions-allc"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
headers = {}
for n in writer.fieldnames:
headers[n] = n
writer.writerow(headers)
# writer.writeheader()
for row in csvRows:
for obj in row:
print (obj)
writer.writerow(obj)
【问题讨论】:
标签: python python-2.7 scripting python-2.6