0

我无法使用 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

4 回答 4

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

  2. 您打开文件,但从不返回它的句柄。尝试替换returnreturn f

  3. 如果您正在使用import xlwt,则无论如何都不需要它;它负责写入文件。请参阅我之前在如何将用户输入(来自 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()
于 2012-06-18T22:57:27.913 回答
2

在这种情况下,您似乎对 open 的含义感到困惑。open()是一个在 Python 中返回文件句柄的函数,因此您可以将数据读入应用程序。

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

于 2012-06-18T23:56:20.017 回答
1

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

于 2012-06-18T22:58:54.340 回答
-1

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

在这里,特别是如果您在 Windows 上运行它,文件是否仍然在其他地方打开,例如在 excel 中或通过您自己的代码?如果文件已经在其他地方可以写入,则无法打开该文件进行写入。

于 2012-06-18T22:49:23.570 回答