为什么会出现此错误?
错误:
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
答案 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打开文件的路径。