How can I fix this "ValueError: can't have unbuffered text I/O" in python 3?

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).


I could overcome this error by using code from this answer:

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)