I have a use case where I'm writing a small filter in Python which
should be able to take output from the find command to filter and
optionally pass it to other commands (like xargs), but also can be
passed specific filenames for the input and/or output.  Find can output
it's filenames in null-terminated lines since it is possible to have
newlines in a filename(yuck).  There are workarounds that I can use to
get the same thing done, essentially using TextIOWrapper in '' mode and
scanning for any null terminators in the lines/splitting manually, but
it would be nice if the TextIOWrapper supported null characters as line
terminators for such use cases if possible.

Something line this:

# configure output stream
if(arg.input):
    input_stream = open(arg.input, "rt", newline="\000" if
arg.null_lines else None)
else:
    input_stream = sys.stdin
    input_stream.reconfigure(newline="\000" if arg.null_lines else None)

# configure input stream


Because my use case also has the ability to specify an encoding for the
input/output, my workaround was originally to use
codec.getreader/getwriter which turned out to be rather slow (the output
of the pipe to the filter was in bursts), so since I'm currently using
3.5 and can't use reconfigure, currently involves detaching sys.stdin
and reattaching to a new TextIOWrapper, setting buffering to 0 and
newline to '' in null-terminated mode to get all the characters
untranslated and manually scanning/splitting on null characters, though
I'm sure there are better way to do this.


Thanks,

Brian Vanderburg II

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/BF7IQGAA54TSEBQ4MOC62XK7BSTJE3HO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to