How to pass a multiline arg to exec('some.exe arg')?

n00m n00m at narod.ru
Tue May 6 01:52:15 EDT 2008


> Yes, call flush() each time you're done writing.

No, it would be too easy & simple.
While stdin is NOT CLOSED stdout has not EOF, but readlines()
waits for its appearence ... and so freezes for good. IMO.
Should be like this:

import popen2
o=popen2.popen2('osql -E -S(local) -dpubs -c"GO" -n -w8000')
while 1:
    o[1].write(raw_input()+'\nGO\n')
    o[1].flush() # this line can be commented
    res=''
    while 1:
        line=o[0].readline()
        if line=='\n': # ??????????????????????????????
            break
        res+=line
    print res

How to break the while loop?
What is the sign of "there is left nothing to read"?

2.
I'm still curious why multiline parameter does not work in Py.
This is how it looks in VBS (and works Ok):

Set w = CreateObject("WScript.Shell")
q = "select * from authors" & vbCrLf
q = q + "select getdate()" & vbCrLf
q = q + "select * from jobs"
Set e = w.Exec("osql.exe -Q""" + q + """")

In shell line it looks like:
osql.exe <...> -Q"select * from bla"



More information about the Python-list mailing list