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

我不能打开一个Excel文件来使用下面的代码在Python 2.7.3中写入数据。 这段代码有什么问题?

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() 

谢谢

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

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

  1. import os放在函数内意味着它不会被导入,直到你运行该函数…可能不是你想要的。

  2. 您打开该文件,但永远不会返回一个句柄。 尝试replacereturnreturn f

  3. 如果你正在使用import xlwt ,那么你不需要这个; 它负责写入文件。 如何导出用户input(从Python)到Excel工作表?

编辑:

…'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() 

你的“f”variables是一个文件对象,它是一个局部variables(只要“openfile”函数结束就销毁)。 你可以将f声明为全局的,或者让你的openfile函数返回文件对象。

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

特别是如果你在windows上运行这个脚本,那么这个文件可能还在其他地方打开,比如在excel中,或者通过你自己的代码? 如果文件已经在其他地方打开,则无法打开文件。