我有一个装满.mpt文件的文件夹,每个文件都有相同的数据格式。 我需要从所有文件中删除前57行,并将这些文件附加到一个csv - output.csv中。 我已经有了这个部分:
import glob
import os
dir_name = 'path name'
lines_to_ignore = 57
input_file_format = '*.mpt'
output_file_name = "output.csv"
def convert():
files = glob.glob(os.path.join(dir_name, input_file_format))
with open(os.path.join(dir_name, output_file_name), 'w') as out_file:
for f in files:
with open(f, 'r') as in_file:
content = in_file.readlines()
content = content[lines_to_ignore:]
for i in content:
out_file.write(i)
print("working")
convert()
print("done")
这部分工作正常。
如何将每个.mpt文件的文件名添加为output.csv的最后一列 谢谢!
答案 0 :(得分:1)
这是一个快速的解决方案。
在此循环中,变量i
只是一个字符串(来自CSV文件的一行):
for i in content:
out_file.write(i)
所以你只需要1)去掉行尾字符(“\ n”或“\ r \ n”)并附加“,”。
如果您使用的是Unix,请尝试:
for i in content:
i = i.rstrip("\n") + "," + output_file_name + "\n"
out_file.write(i)
这假设字段分隔符是逗号。另一种选择是:
for i in content:
i = i.rstrip() + "," + output_file_name
print >>out_file, i
这将从i
的末尾删除所有空白区域。
如果需要引用输出文件名,请添加引号:
i = i.rstrip(...) + ',"' + output_file_name '"'
答案 1 :(得分:0)
相关部分:
with open(f, 'r') as in_file:
content = in_file.readlines()
content = content[lines_to_ignore:]
for i in content:
new_line = ",".join([i.rstrip(), f]) + "\n" #<-- this is new
out_file.write(new_line) #<-- this is new