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.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Frage zu subprocess

Beitragvon Sr4l » Samstag 5. April 2008, 20:12

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

Beitragvon BlackJack » Samstag 5. April 2008, 20:57

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:

Beitragvon mkesper » Samstag 5. April 2008, 21:24

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

Beitragvon Sr4l » Samstag 5. April 2008, 23:39

Vielen dank das werde ich erstmal ausprobieren.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 8. April 2008, 09:11


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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder