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

0 投票
4 回答
1568 浏览
提问于 2025-04-17 01:35

这个错误为什么会出现呢?

错误信息:

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打开文件时的路径。

撰写回答