2017-08-17 49 views
-1

我需要創建一個文件並在for循環之前寫入其標頭內容。如果我在循環中執行它,則循環的每次迭代都會重複標題內容。當我執行下面的代碼時,出現錯誤「關閉的文件上的I/O操作」。寫入並讀取到csv文件 - I/O操作錯誤

想知道這個問題有什麼解決辦法嗎?任何建議,將不勝感激。 TIA !!

csv_filename = "testfile4.csv" 
    with open(csv_filename, "wt") as csvfile: 
     writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 

     # CSV Header 
     header = ["Post ID", "Permalink", "Create Time"] 
     writer.writerow(header) 

    for group in getGroups(): 
     feed = getValues(group["id"], group["name"]) 
     with open(csv_filename, "a") as csvfile: 
      for item in feed: 
       row = [item["id"], item["permalink_url"], item["created_time"]] 
       writer.writerow(row) 
+1

更深移動整個'for'一環縮進。 –

+0

你到目前爲止嘗試過什麼?你有沒有嘗試刪除其中一個「with」塊?你有沒有試過在打開它之間關閉文件? – xyious

+1

不要在''a''模式下第二次打開文件,這是完全不必要的。只需在第一個「with」塊內完成所有操作。 –

回答

0

你可以處理所有必要的操作單with聲明

csv_filename = "testfile4.csv" 
with open(csv_filename, "wt") as csvfile: 
    writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 
    header = ["Post ID", "Permalink", "Create Time"] 
    writer.writerow(header) 
    for group in getGroups(): 
     feed = getValues(group["id"], group["name"]) 
     for item in feed: 
      row = [item["id"], item["permalink_url"], item["created_time"]] 
      writer.writerow(row)