使用python将文件名添加到csv中的最后一列

时间:2014-12-16 23:51:32

标签: python csv

我有一个装满.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的最后一列 谢谢!

2 个答案:

答案 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