Martin P. Hellwig wrote: > Hi all, > > I was doing some popen2 tests so that I'm more comfortable using it. > I wrote a little python script to help me test that (testia.py): > > --------------------------------- > someline = raw_input("something:") > > if someline == 'test': > print("yup") > else: > print("nope") > --------------------------------- > > And another little thing that does it's popen2 stuff: > > --------------------------------- > import popen2 > > std_out, std_in = popen2.popen2("testia.py") > > x=std_out.readline() > print(x) > > std_in.writelines("notgood") > > x=std_out.readline() > print(x) > --------------------------------- > > Now what I expected was that I got the return one the first line: > "something:" and on the second "nope", but instead of that I got: > > >>> > something: > Traceback (most recent call last): > File "F:\coding\pwSync\popen_test\popen_test.py", line 8, in ? > std_in.writelines("notgood") > IOError: [Errno 22] Invalid argument > >>> > > I played around a bit with flush, write and the order of first writing > and then reading, the best I can get is no error but still not the > expected output. I googled a bit copied some examples that also worked > on my machine, reread the manual and the only conclusion I have is that > I don't even understand what I'm doing wrong. > > Would you please be so kind to explain my wrong doing? > (python 2.4 + win32 extensions on XPProSP2)
>>> help(sys.stdin.writelines) Help on built-in function writelines: writelines(...) writelines(sequence_of_strings) -> None. Write the strings to the file. Note that newlines are not added. The sequence can be any iterable object producing strings. This is equivalent to calling write() for each string> You gave it a single string, not a list(sequence) of strings. Try something like: std_in.writelines(["notgood"]) -- http://mail.python.org/mailman/listinfo/python-list