Frage zu subprocess

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

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?
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.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Vielen dank das werde ich erstmal ausprobieren.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Sieht sehr interessant aus... Was ich ein wenig komisch finde, warum man man nicht os.linesep nutzt...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten