簡體   English   中英

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

[英]Adding filename to last column in csv using python

我有一個充滿.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的最后一列,謝謝!

這是一個快速的解決方案。

在此循環中,變量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 '"'

相關部分:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM