导入Wordlist

时间:2012-09-13 18:52:17

标签: python

我在麻省理工学院的开放课件上学习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兼容的函数。

2 个答案:

答案 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以关闭缓冲(仅在二进制模式下允许)。