导入Wordlist

use*_*661 1 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)
Run Code Online (Sandbox Code Playgroud)

麻省理工学院课程不使用我正在使用的Python 3.0,因此可能存在问题; 正如您所看到的,我已经将声明中的"print"更新为与Python 3.0兼容的函数.

Abh*_*kar 6

抛出此错误是因为您尝试读取缓冲关闭的文本文件(第三个参数设置为0):

inFile = open(WORDLIST_FILENAME, 'r', 0)
Run Code Online (Sandbox Code Playgroud)

用以下代替上面的行

inFile = open(WORDLIST_FILENAME, 'r')
Run Code Online (Sandbox Code Playgroud)

它应该工作.

从python文档:

buffering是一个可选的整数,用于设置缓冲策略. 传递0以切换缓冲关闭(仅允许在二进制模式下),1选择行缓冲(仅在文本模式下可用),并且整数> 1以指示固定大小的块缓冲区的大小.