Seite 1 von 1

Frage zu subprocess

Verfasst: Samstag 5. April 2008, 20:12
von Sr4l

Code: Alles auswählen

#!/usr/bin/env python
import os
import sys
import subprocess

for x in os.walk(r"C:\Users\Sr4l\DreamInCode\C\source"):
    for y in x[2]:
        if os.path.isfile(os.path.join(x[0],y)) and y.endswith(".c"):

            proc = subprocess.Popen('C:\Windows\System32\cmd.exe',
                        shell=True,
                        stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        )
            print proc.communicate("""
                        cd C:/cygwin/bin/ \n\r
                        gcc.exe -o %s.exe %s\n\r
                    """%(
                    os.path.join(x[0],y).replace("source", "build")[:-2],
                    os.path.join(x[0],y)))

Meine Frage ist:

Warum wird nach `proc.communicate` die Datei geschlossen, so das ich nicht nochmal `proc.communicate` nutzen kann?

Verfasst: Samstag 5. April 2008, 20:57
von BlackJack
Weil `communicate()` erst zurück kehrt, wenn das externe Programm fertig und beendet ist. Da ist auf der Gegenseite dann niemand mehr, mit dem man noch kommunizieren könnte.

Verfasst: Samstag 5. April 2008, 21:24
von mkesper

Verfasst: Samstag 5. April 2008, 23:39
von Sr4l
Vielen dank das werde ich erstmal ausprobieren.

Verfasst: Dienstag 8. April 2008, 09:11
von jens
Sieht sehr interessant aus... Was ich ein wenig komisch finde, warum man man nicht os.linesep nutzt...