.read()返回" unicode对象没有读取属性"在python中使用askopenfilename()

时间:2017-08-23 02:46:15

标签: python unicode tkinter attributeerror

我试图在Python的Tkinter中为scrolledText创建导入函数,但是在读取文件时会引发AttributeError。代码:

def open_command():
    openfile = tkFileDialog.askopenfilename()
    if openfile != None:
        contents = openfile.read()
        textPad.delete('1.0', END)
        textPad.insert('1.0', contents)
        openfile.close()

错误:

    contents = openfile.read()
AttributeError: 'unicode' object has no attribute 'read'

我想澄清一下&text;' textPad'指的是一个“滚动的文本”'宾语。 有谁知道为什么会这样?起初我以为错误可能来自编码,所以我用UTF-8编码,但它仍然返回相同的错误。提前谢谢!

1 个答案:

答案 0 :(得分:2)

tkFileDialog.askopenfilename()返回文件名而不是文件对象。你会想要做的事情:

def open_command():  
    filename = tkFileDialog.askopenfilename()
    if filename is not None:
        with open(filename) as f:
           contents = f.read()
        textPad.delete('1.0', END)
        textPad.insert('1.0', contents)

[如果您使用的是Python 2.7,请考虑使用Python 3或将上述内容更改为open(filename, 'r')]