Python subprocess: 64 bit windows server PIPE doesn't exist :(

Posted by Spaceman1861 on Stack Overflow See other posts from Stack Overflow or by Spaceman1861
Published on 2010-04-06T05:55:35Z Indexed on 2010/04/06 7:43 UTC
Read the original article Hit count: 296

Filed under:
|
|

I have a GUI that launches selected python scripts and runs it in cmd next to the gui window. I am able to get my launcher to work on my (windows xp 32 bit) laptop but when I upload it to the server(64bit windows iss7) I am running into some issues. The script runs, to my knowledge but spits back no information into the cmd window.

My script is a bit of a Frankenstein that I have hacked and slashed together to get it to work I am fairly certain that this is a very bad example of the subprocess module. Just wondering if i could get a hand :). My question is how do i have to alter my code to work on a 64bit windows server. :)


from Tkinter import *
import pickle,subprocess,errno,time,sys,os
PIPE = subprocess.PIPE
if subprocess.mswindows:
    from win32file import ReadFile, WriteFile
    from win32pipe import PeekNamedPipe
    import msvcrt
else:
    import select
    import fcntl

def recv_some(p, t=.1, e=1, tr=5, stderr=0):
    if tr < 1:
        tr = 1
    x = time.time()+t
    y = []
    r = ''
    pr = p.recv
    if stderr:
        pr = p.recv_err
    while time.time() < x or r:
        r = pr()
        if r is None:
            if e:
                raise Exception(message)
            else:
                break
        elif r:
            y.append(r)
        else:
            time.sleep(max((x-time.time())/tr, 0))
    return ''.join(y)


def send_all(p, data):
    while len(data):
        sent = p.send(data)
        if sent is None:
            raise Exception(message)
        data = buffer(data, sent)

The code above isn't mine


def Run():
    print filebox.get(0)
    location = filebox.get(0)
    location = location.__str__().replace(listbox.get(ANCHOR).__str__(),"")
    theTime = time.asctime(time.localtime(time.time()))
    lastbox.delete(0, END)
    lastbox.insert(END,theTime) 
    for line in CookieCont:
        if listbox.get(ANCHOR) in line and len(line) > 4:
            line[4] = theTime
        else:
            "Fill In the rip Details to record the time"
    if __name__ == '__main__':
        if sys.platform == 'win32' or sys.platform == 'win64':
            shell, commands, tail = ('cmd', ('cd "'+location+'"',listbox.get(ANCHOR).__str__()), '\r\n')
        else:
            return "Please use contact admin"
        a = Popen(shell, stdin=PIPE, stdout=PIPE)
        print recv_some(a)
        for cmd in commands:
            send_all(a, cmd + tail)
            print recv_some(a)
        send_all(a, 'exit' + tail)
        print recv_some(a, e=0)

The Code above is mine :)

© Stack Overflow or respective owner

Related posts about python

Related posts about 64bit