我已经开始使用Geany编写代码(在Linux上工作)。它与Geany一起工作正常,当我尝试在pythontutor.org上模拟它时,一切似乎都是正确的,但IDLE(在Macbook上)不会执行它。 这是我的代码:
import random
f = open('mots.txt')
word_list = f.readlines()
line = random.randint(0,len(word_list))
word = word_list[line]
print(word)
它应该打开文件,列出其中包含的单词(每行有一个单词),选择一个对应一行的数字,然后给我随机选择的单词。
这是我从IDLE得到的:
Traceback (most recent call last):
File "/Users/luvi/Desktop/maths/INFO-F-101/Projets/projet2_test.py", line 3, in <module>
word_list = f.readlines()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 305: ordinal not in range(128)
谢谢!
答案 0 :(得分:2)
你没有特别提出问题,但我认为你想知道为什么以及做什么。 doc for open表示“默认编码取决于平台(无论locale.getpreferredencoding()返回什么)。”如果您的文件具有已知的非ascii编码,则安全,跨平台的操作是在公开调用中提供显式编码参数。
由于Python而不是IDLE执行open
,我怀疑你应该将标题更改为“在Linux上运行的Python代码而不是OSX”。要测试,请直接使用Python从命令行运行,而不是从IDLE或Geany运行。