Ric*_*ard 11 python python-3.x
这是麻省理工学院python项目的一个问题,但它基本上是为python 2.x用户编写的,那么有没有办法修复下面的代码来运行最新的python 3?
当前代码提出"ValueError:不能有无缓冲的文本I/O"
WORDLIST_FILENAME = "words.txt"
def load_words():
print("Loading word list from file...")
inFile = open(WORDLIST_FILENAME, 'r', 0)
# wordlist: list of strings
wordlist = []
for line in inFile:
wordlist.append(line.strip().lower())
print(" ", len(wordlist), "words loaded.")
return wordlist
Run Code Online (Sandbox Code Playgroud)
Dee*_*ace 14
来自open
的文档字符串:
... buffering是一个可选的整数,用于设置缓冲策略.传递0以关闭缓冲(仅在二进制模式下允许)...
所以改变 inFile = open(WORDLIST_FILENAME, 'r', 0)
至
inFile = open(WORDLIST_FILENAME, 'r')
, 或者
inFile = open(WORDLIST_FILENAME, 'rb', 0)
如果你真的需要它(我怀疑).
我可以通过使用此答案中的代码来克服此错误:
class Unbuffered(object):
def __init__(self, stream):
self.stream = stream
def write(self, data):
self.stream.write(data)
self.stream.flush()
def writelines(self, datas):
self.stream.writelines(datas)
self.stream.flush()
def __getattr__(self, attr):
return getattr(self.stream, attr)
import sys
sys.stdout = Unbuffered(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11939 次 |
最近记录: |