将列表保存为CSV - python

时间:2013-07-24 13:18:59

标签: csv python-3.x tkinter

我尝试使用“import csv”将输出保存为csv并且只获取错误。有什么理由吗?

由于我无法让它运行,它还会通知文件是否已经存在?

非常感谢

from tkinter import *
from tkinter.filedialog import asksaveasfilename
from tkinter import ttk

import csv

def data():
  ...
  output= <class 'list'>  #just an example
  ...    

def savefile():
  name= asksaveasfilename()
  create = csv.writer(open(name, "wb"))
  create.writerow(output)
  for x in output:
      create.writerow(x)

root = Tk()
Mframe = ttk.Frame(root)
Mframe.grid(column=0, row=0, sticky=(N, W, E, S))

bSave=ttk.Button(Mframe, text='Save File', command=savefile)
bSave.grid(column=1, row=0)

root.mainloop()

1 个答案:

答案 0 :(得分:0)

您正在打开文件,但没有关闭它。一个好的做法是使用with语句确保关闭它。顺便说一下,我不知道output列表是怎么样的,但如果它不是列表列表,那么调用writerow一次就更有意义了。

此外,请确保此列表也是全局变量,否则它将在savefile的范围内不可用。但是,全局变量不是一个很好的解决方案,因此请考虑将其作为参数传递给savefile或使用类来保存所有这些数据:

def savefile():
    name = asksaveasfilename()
    with open(name, 'w', newline='') as csvfile:
        create = csv.writer(csvfile)
        create.writerow(output)