为什么我的代码中会抛出这个错误 - 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 个回答
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
的目的是根据文件名打开文件,但你实际上已经有一个文件了。
所以直接使用这个文件就可以了。
4
askopenfile
这个函数会把你打开的文件直接给你,而不是文件的名字,所以你不需要再用open
去打开它。如果你真的想要文件的名字,可以用askopenfilename
这个函数,但看起来你现在的操作并不需要这样做。
0
当你打开一个文件时,你需要知道文件的路径。这里的fno是一个类,但如果你这样写:
fileopened = open(fno.name, "w+"),就可以解决问题了...
fno.name会给你你用askopenfile打开文件时的路径。