尝试创建一个twitter机器人来读取和发布行。使用Python3和tweepy,通过我共享服务器空间上的virtualenv。这部分代码似乎有问题:
#!/foo/env/bin/python3
import re
import tweepy, time, sys
argfile = str(sys.argv[1])
filename=open(argfile, 'r')
f=filename.readlines()
filename.close()
这是我得到的错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe in position 0: ordinal not in range(128)
错误特别指向f=filename.readlines()
作为错误源。知道怎么回事吗?谢谢。
您的默认编码似乎是ASCII,其中的输入很可能是UTF-8。当您在输入中命中非ASCII字节时,它将引发异常。与其说是
readlines
本身造成了这个问题,不如说是它导致了read+decode的发生,并且解码失败。不过,这是一个简单的解决方案;Python 3中的默认
open
允许您提供已知的输入encoding
,用任何其他可识别的编码替换默认值(在您的例子中是ASCII)。如果它允许您继续以str
(而不是显著不同的原始二进制数据bytes
对象)的形式读取,同时让Python完成从原始磁盘字节到真正文本数据的转换工作:我认为(在Python 3中)最好的答案是使用
errors=
参数:证明:
注意
errors=
可以是replace
或ignore
。以下是ignore
的样子:最终找到了一个可行的答案:
This post帮了我很多忙。
相关问题 更多 >
编程相关推荐