我在麻省理工学院的开放课件上学习CS / Python。他们希望我设计一个刽子手游戏并给我一些初步代码,用于导入一个单词列表并从那里生成一个随机单词。此代码本身返回一个错误:“不能有无缓冲的文本I / O.”这是代码:
import random
import string
WORDLIST_FILENAME = "words.txt"
def load_words():
print("Loading word list from file...")
# inFile: file
inFile = open(WORDLIST_FILENAME, 'r', 0)
# line: string
line = inFile.readline()
# wordlist: list of strings
wordlist = string.split(line)
print(" ", len(wordlist), "words loaded.")
return wordlist
def choose_word(wordlist):
return random.choice(wordlist)
MIT课程不使用我正在使用的Python 3.0,因此可能存在问题;正如您所看到的,我已经将声明中的“print”更新为与Python 3.0兼容的函数。
答案 0 :(得分:6)
抛出此错误是因为您尝试在缓冲关闭(第三个参数设置为0)的情况下读取文本文件:
inFile = open(WORDLIST_FILENAME, 'r', 0)
用
替换上面的行inFile = open(WORDLIST_FILENAME, 'r')
它应该有用。
来自python docs:
buffering是一个可选的整数,用于设置缓冲策略。 传递0以切换缓冲关闭(仅允许在二进制模式下),1到 选择行缓冲(仅在文本模式下可用)和整数> 1 指示固定大小的块缓冲区的大小。
答案 1 :(得分:3)
从0
内置函数调用中删除open
。来自python docs:
缓冲是一个可选的整数,用于设置缓冲策略。 传递0以关闭缓冲(仅在二进制模式下允许)。