这个“文件打开”代码有什么问题?

时间:2012-06-18 22:42:14

标签: python excel user-interface

我无法使用python 2.7.3中的以下代码打开excel文件来写入数据。 这段代码有什么问题?

def openfile():
    import os
    f=open('ab.xls', 'w')
    return

import Tkinter
from Tkinter import *
root=Tk()
root.geometry('100x100+100+100')

button1=Button(root, text='Open file', command=openfile)
button1.pack()

root.mainloop()

谢谢

4 个答案:

答案 0 :(得分:2)

  1. import os放在函数中意味着在运行函数之前它不会被导入...可能不是你想要的。

  2. 您打开文件,但永远不会返回它的句柄。尝试将return替换为return f

  3. 如果您使用import xlwt,则无论如何都不需要此项;它负责写入文件。请参阅我之前在How to export user inputs (from python) to excel worksheet?

  4. 的回复

    修改

    ...'ab.xls'被打开,你返回了一个句柄,然后什么都不做。你到底想要做什么呢?

    尝试

    import Tkinter as tk
    
    def do_something_with_file():
        with open('ab.xls', 'w') as f:
            print("The file is open")
            # --> now DO SOMETHING with it <--
    
    root = tk.Tk()
    root.geometry('100x100+100+100')
    button1 = tk.Button(root, text='Open file', command=do_something_with_file)
    button1.pack()
    root.mainloop()
    

答案 1 :(得分:2)

你似乎对这种背景下的开放手段感到困惑。 open()是一个在Python中返回文件句柄的函数,因此您可以将数据读入应用程序。

如果要使用系统上的默认程序打开该文件类型的文件,请查看os.startfile()

答案 2 :(得分:1)

您的“f”变量是一个文件对象,它是一个局部变量(一旦“openfile”函数结束就被销毁)。您可以将f声明为全局,或让openfile函数返回文件对象。

答案 3 :(得分:-1)

我在这段代码中看不到任何明显的致命错误。

在这里走出困境,特别是如果你在Windows上运行它,文件是否仍然可以在其他地方打开,比如excel或通过你自己的代码?如果文件已在其他地方开放,则无法打开文件进行书写。