TypeError:需要字符串或缓冲区,找到列表

时间:2012-05-12 03:59:40

标签: python typeerror

我正在努力通过以艰难的方式学习Python 并坚持练习16的额外功劳。我正在尝试阅读我使用主要练习创建的文件.16。代码我写的如下:

# pylint: disable-msg=C0103
""" This script reads and prints a file set from the argv """
from sys import argv

filename = argv

txt = open(filename)

print txt.read()

我想读的文件是:

Derp Derp
Reading this file
Will it work?

我收到错误: TypeError:强制转换为Unicode:需要字符串或缓冲区,找到列表但我不确定我的文件是列表而不是字符串。

3 个答案:

答案 0 :(得分:6)

要进行调试,请尝试打印filename

答案 1 :(得分:4)

argv是脚本的参数列表。第一个参数是argv[1]。试试这个:

from sys import argv

txt = open(argv[1])

print txt.read()

重要说明:几乎所有列表中的第一项都是0项,argv是一个例外,因为0参数是你的脚本名称。

答案 2 :(得分:0)

我也遇到了同样的错误,但用这段代码解决了它:

from sys import argv

txt = open(argv[1])

print txt.read()