2017-07-25 73 views
0

我是一名Python初學者,我一直在努力創建一個將列添加到一組類似csv文件的代碼。在Python中向Python中的多個CSV文件中添加一個新列(以及其中的數據)

這是我到目前爲止有:

import csv, os 

for csvFilename in os.listdir('.'): 
    if not csvFilename.endswith('.csv'): 
     continue 
    print('Editing file ' + csvFilname + '...') 

    file = open(csvFilename) 
    reader = csv.reader(file) 
    writer = csv.writer(open('new_' + csvFilename, 'w')) 
    headers = reader.next() 
    headers.append('ColName') 
    writer.write(headers) 
    for row in reader: 
     row.append(str(row[12]) + ' ' + str(row[13]) + " some text") 
     writer.write(row) 

基本上,我想增加一列中,我有「行13的文本 + 排14的文本 + 其他文字,每次都一樣「。

我上writer.write(頭)行此錯誤消息,雖然: AttributeError的: '_csv.writer' 對象有沒有屬性 '寫'

我應該怎麼辦?

回答

0

我不得不重構你的代碼,但是這應該是最接近你想實現什麼。你需要做的異常處理和檢查,如果有該行超過13元,等

import tempfile, os, csv 

for csvFilename in os.listdir('.'): 
    if not csvFilename.endswith('.csv'): 
     continue 
    print('Editing file ' + csvFilename + '...') 
    with open(csvFilename, 'r') as csvFile: 
     reader = csv.reader(csvFile, delimiter=',', quotechar='"') 
     with open('new_' + csvFilename, 'w') as tempfile: 
      writer = csv.writer(tempfile, delimiter=',', quotechar='"') 
      header = True 
      for row in reader: 
       if (header): 
        row.append('ColName') 
        writer.writerow(row) 
        header = False 
       else: 
        row.append(str(row[12]) + ' ' + str(row[13]) + " some text") 
        writer.writerow(row) 

更多關於蟒蛇CSV:https://docs.python.org/3/library/csv.html

0

你需要閱讀API文檔,只需

https://docs.python.org/3/library/csv.html

csv.writer寫入功能使用writerow不是write,請檢查。

寫CSV文件樣本,

import csv 
with open('eggs.csv', 'w', newline='') as csvfile: 
    spamwriter = csv.writer(csvfile, delimiter=' ', 
          quotechar='|', quoting=csv.QUOTE_MINIMAL) 
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 
相關問題