2017-08-17 47 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)