2017-06-27 44 views
0

填充我是比較新的蟒蛇,我試圖將新列添加到所有的.csv文件的目錄,並與家長CSV文件的文件名進行填充。添加一個新列到.csv與文件名

我的代碼(來自論壇的其他部分)允許我在單個文件(listing1.csv)中添加一個新列並將其稱爲'FileName',然後使用文件內的其他變量(行0 ,1,2等)。

我想提出兩個更改爲:

  1. 從另一列添加的實際文件名的文件(listings1),以文件名,而不是數據
  2. 運行本作中的所有CSV文件目錄(listings1,listings2,listings3 ...),只是更新源文件,而不是創建新的(輸出1等)

任何意見讚賞

import csv 

with open('listings1.csv','r') as csvinput: 
with open('output1.csv', 'w') as csvoutput: 
    writer = csv.writer(csvoutput, lineterminator='\n') 
    reader = csv.reader(csvinput) 

    all = [] 
    row = next(reader) 
    row.append('FileName') 
    all.append(row) 

    for row in reader: 
     row.append(row[1]) 
     all.append(row) 

    writer.writerows(all) 

回答

1

我不知道如果我完全理解你的問題,但在最壞的情況下這應該給你一些想法如何解決你的問題。

import csv 
import os 

for file_name in os.listdir(): 
    with open(file_name,'r') as csvinput: 
     reader = csv.reader(csvinput) 

     all = [] 
     row = next(reader) 
     row.append('FileName') 
     all.append(row) 

     for row in reader: 
      row.append(file_name) 
      all.append(row) 

     with open(file_name, 'w') as csvoutput: 
      writer = csv.writer(csvoutput, lineterminator='\n') 
      writer.writerows(all) 
+0

米哈爾,感謝您的幫助。我試圖使用這個,但得到一個錯誤,說listdir <>接受一個參數,並給出0。我需要在這裏添加絕對路徑嗎?比如os.listdir('G:/ Projects/Files')? – Justin

+0

還不是知道你正在運行python2。我的解決方案適用於python3。 正如你所提到的,在python2中你需要指定路徑。 –

+0

謝謝。這對我有效。對於.xls文件而不是.csv,我需要做些什麼才能完成此任務? – Justin