1

MIT のオープン コースウェアで 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 を使用していないため、問題がある可能性があります。ご覧のとおり、Python 3.0 との互換性のために、"print" を宣言から関数に更新済みです。

4

2 に答える 2

6

このエラーは、バッファリングがオフになっている (3 番目のパラメーターが 0 に設定されている)テキスト ファイルを読み込もうとしているためにスローされます。

inFile = open(WORDLIST_FILENAME, 'r', 0)

上記の行を次のように置き換えます

inFile = open(WORDLIST_FILENAME, 'r')

そしてそれはうまくいくはずです。

Python ドキュメントから:

buffering は、バッファリング ポリシーを設定するために使用されるオプションの整数です。 0 を渡してバッファリングをオフに切り替え (バイナリ モードでのみ許可)、1 を渡して行バッファリングを選択し (テキスト モードでのみ使用可能)、整数 > 1 を渡して固定サイズのチャンク バッファのサイズを示します。

于 2012-09-13T18:56:22.507 に答える
3

組み込み関数呼び出し0から削除します。openPython ドキュメントから:

Buffering は、バッファリング ポリシーを設定するために使用されるオプションの整数です。バッファリングをオフにするには、0 を渡します (バイナリ モードでのみ許可されます)。

于 2012-09-13T18:56:45.197 に答える