2017-07-23 36 views
0

我想使用for創建2個或多個CSV文件,但只創建1個CSV。迭代不能在Python中使用「打開」CSV模塊工作

import csv 
import os 

foods = ['pasta','chocolate'] 
for food in foods: 
    with open(food+'.csv', 'w') as csvfile: 
     fieldnames = ['id', 'Category', 'Name'] 

     writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
     writer.writeheader() 
     os.chdir('E:/data/'+food) 
     folders = os.listdir(os.curdir) 
     for filename in folders: 
       writer.writerow({'id':'', 'Category':food, 'Name':filename}) 

在這種情況下,只有pasta.csv創建成功。我想要創建chocolate.csv。 任何解決方案?謝謝

+2

我會懷疑'chocolate.csv'文件已經在'ë創建:因爲/ data'文件夾在第一次迭代中使用'chdir'。 –

+0

那麼'chdir'有什麼問題? –

回答

0

我懷疑是工作,問題出在os.chdir。你只需要它來獲取目錄列表,你可以考慮使用glob代替:

import csv 
from glob import glob 

foods = ['pasta','chocolate'] 
for food in foods: 
    with open(food+'.csv', 'w') as csvfile: 
     fieldnames = ['id', 'Category', 'Name'] 

     writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
     writer.writeheader() 
     folders = glob('E:/data/'+food+'/*/') 
     for filename in folders: 
       writer.writerow({'id':'', 'Category':food, 'Name':filename}) 
+0

謝謝@AC_,現在都創建了,但是CSV的內容並不是巧克力和麪食文件夾裏面的文件名。 –

+0

我不好意思,我忘了在glob的參數中添加通配符。它現在應該工作。 –