How Can I Fix This "valueerror: Can't Have Unbuffered Text I/o" In Python 3?
This is one of the MIT python project questions, but it's basically written for python 2.x users, so is there any way to fix the following code to operate in the latest python 3? T
Solution 1:
From open
's docstring:
... buffering is an optional integer used to set the buffering policy. Pass 0 to switch buffering off (only allowed in binary mode) ...
So change inFile = open(WORDLIST_FILENAME, 'r', 0)
to
inFile = open(WORDLIST_FILENAME, 'r')
, or to
inFile = open(WORDLIST_FILENAME, 'rb', 0)
if you really need it (which I doubt).
Solution 2:
I could overcome this error by using code from this answer:
classUnbuffered(object):
def__init__(self, stream):
self.stream = stream
defwrite(self, data):
self.stream.write(data)
self.stream.flush()
defwritelines(self, datas):
self.stream.writelines(datas)
self.stream.flush()
def__getattr__(self, attr):
returngetattr(self.stream, attr)
import sys
sys.stdout = Unbuffered(sys.stdout)
Solution 3:
You can flush to the file after every write.
outFile = open(outputfile, "w",encoding='utf-8')
inFile = open(inputfile, "r",encoding='utf-8')
while inFile:
line = inFile.readline()[:-1]
outFile.write(line)
outFile.flush()
Post a Comment for "How Can I Fix This "valueerror: Can't Have Unbuffered Text I/o" In Python 3?"