为什么我的代码中抛出了这个错误 - Python?

时间:2011-09-06 16:57:40

标签: python

为什么会出现此错误?

错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27_1\lib\lib-tk\Tkinter.py", line 1410, in __call_
    return self.func(*args)
  File "editor.py", line 90, in onOpen
    fileopened = open(fno, "w+")
TypeError: coercing to Unicode: need string or buffer, file found

代码:

https://code.google.com/p/childreneditor/source/browse/trunk/editor-new.py

4 个答案:

答案 0 :(得分:4)

askopenfile会将打开的文件返回给您,而不是其名称,因此无需在其上调用open。如果你真的想要这个名字,你可以使用askopenfilename代替,但对你所做的事情似乎没有必要。

答案 1 :(得分:1)

就像它说:

fileopened = open(fno, "w+")

这是有问题的代码行。

TypeError: coercing to Unicode: need string or buffer, file found

这就是问题所在。

w+是一个字符串,显然它是fno导致问题。问题是需要string or buffer,它实际上是file。您需要string or buffer,因为这是open的文件名参数。 open的目的是打开给定文件名的文件;但是你已经有了一个文件。

所以只需使用该文件。

答案 2 :(得分:0)

代码中的

“fno”是文件对象,open()需要接收字符串或unicode 见http://docs.python.org/library/functions.html#open

答案 3 :(得分:0)

当你打开文件时,你需要路径...... fno是一个类,但如果你这样做: fileopened = open(fno.name,“w +”)它应该做的伎俩......

fno.name为您提供使用askopenfile打开文件的路径。