On 2010-10-15, MRAB <pyt...@mrabarnett.plus.com> wrote: >> I wrote an equivalent program in C++ using the win32 >> ReadFile() call, and it read all 255 bytes just fine. What am >> I doing wrong with the python code? >> >> >> I am using Erlang to launch the Python program as a subprocess. The >> Erlang fragment that launches this and sends the data is: >> >> Port=open_port( {spawn_executable, "c:/Python31/pythonw.exe"}, >> [{args, ["c:/iotest/main.pyw"]}]), >> Port ! {self(),{command,lists:seq(1,255)}}, > > By default, Python opens stdin in buffered text mode in which > '\x1A' marks the end of the text. Try adding the "-u" option > ("unbuffered") to Python's command line: > > pythonw.exe -u main.pyw
To expound a bit, using a windows-only module you can switch the mode of stdin. import sys import msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list