我有一個文件夾擁有超過15,000個csv文件。它們都有不同數量的列名。從csv文件讀取列名並保存爲列表時出錯
大多數文件都有它的第一行作爲列名(數據屬性)是這樣的:
Name Date Contact Email
a b c d
a2 b2 c2 d2
我想要做的是閱讀的所有文件的第一行,將它們存儲爲列表,並寫該列表顯示爲新的csv文件。
這是我迄今所做的:
import csv
import glob
list=[]
files=glob.glob('C:/example/*.csv')
for file in files :
f = open(file)
a=[file,f.readline()]
list.append(a)
with open('test.csv', 'w') as testfile:
csv_writer = csv.writer(testfile)
for i in list:
csv_writer.writerow(i)
當我嘗試這個代碼,結果出來是這樣的:
[('C:/example\\example.csv', 'Name,Date,Contact,Email\n'), ('C:/example\\example2.csv', 'Address,Date,Name\n')]
因此在做CSV,每個文件的所有屬性要通過量時 New CSV file made
此外:進入第二列,這使其看起來像這樣(出於某種原因,有一間空行) h文件,我得到了另一個錯誤:
UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 6: illegal multibyte sequence
所以我在第一行中包含此代碼,但它沒有工作,說文件無效。
import codecs
files=glob.glob('C:/example/*.csv')
fileObj = codecs.open(files, "r", "utf-8")
我閱讀關於stackflow的答案,但找不到與我的問題有關的答案。我感謝你的回答。
首先,你不應該使用'list'作爲變量名稱。 –
如果我正確理解你的目標,試着用'a = next(reader)'替換'a = [file,f.readline()]',並讓我知道它是否有效。 –
另外,你使用'with ... as ...'跟隨你的outfile執行好的上下文管理器練習,但是你也應該對每個infile都這樣做。 –