system() in Python?

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
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Hallo zusammen!

Die Frage ist mir etwas peinlich, aber ich hätte gerne gewusst, wie man in Python auf andere Programme zugreifen kann. In Ruby oder C++ geht das in etwa so:

Code: Alles auswählen

system("wget http://blablub.de/blablub.txt")
wget ist jetzt nur ein Beispiel für die Benutzung der Funktion system().

Ich vermute, bei Python hängt eine solche Funktion irgendwo im os-Modul. Kann mir jemand auf die Sprünge helfen?
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Jap richtig geraten ;) Es verbirgt sich im Modul 'os'.

Beispiel

Code: Alles auswählen

import os

# warum auch immer...
if sys.argv[1] == 'vater_datei':
    os.system('python vater.py')
Ist zwar nen blöödes Beispiel... aber näheres findet man unter
http://docs.python.org/lib/module-os.html

Um dateien auszuführen gibt es z.B.

Code: Alles auswählen

os.startfile(dateiname)
oder (ungetestet) um auf die Ausgaben der Konsole reagieren zu können -- evtl. sie auf eine GUI umleiten zu können (weiß net, ob das so geht)
gäbe es 'os.popen' -- ... -- aber da kenn ich mich nicht so aus

MfG EnTeQuAk
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Schau mal hier hinein:

http://docs.python.org/lib/os-process.html

Dort findest du deine system()-Funktion, bzw auch noch anderes (vlt) nützliches...

Hat sich schon mal jemand mit Hooking unter Python beschäftigt?

Edit: Da war ich wohl ein Sekündchen zu langsam ;)
Zuletzt geändert von skypa am Donnerstag 1. Februar 2007, 15:09, insgesamt 1-mal geändert.
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Danke für die Erklärung und die Links :)

Liebe Grüße
klip
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

``subprocess``

[wiki]Neue Features#Subprocess[/wiki]
Dadurch sollen os.system(), os.popen() und die Funktionen des popen2 Moduls vereinheitlicht werden, so dass man in Zukunft nur noch das subprocess Modul nutzt. Dazu stellt dieses Modul eine Klasse zur Verfügung: Popen.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Danke Sape :) das wusste ich auch noch nicht :D

Man lernt halt nie aus :D


MfG EnTeQuAk
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

EnTeQuAk hat geschrieben:Man lernt halt nie aus :D
Das stimmt. Ist aber auch schön, so wird es nie langweilig :D

lg
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Was natürlich nicht heißt, dass `os.system()` nicht mehr verwendet werden soll. Für einfache Shellaufrufe tut es genauso wie subprocess, man braucht kein zusätzliches Modul importieren und die Semantik merkt man sich auch leichter ;)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Ja das stimmt schon ;) Aber meist sind die Aufrufe ehe nicht "leicht".
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

birkenfeld hat geschrieben:man braucht kein zusätzliches Modul importieren
Und bei os.system etwa nicht? ;) Sorry - das musste jetzt einfach sein, ich hatte einen harten Tag...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Leonidas hat geschrieben:
birkenfeld hat geschrieben:man braucht kein zusätzliches Modul importieren
Und bei os.system etwa nicht? ;) Sorry - das musste jetzt einfach sein, ich hatte einen harten Tag...
Nein, os ist eh immer importiert.

Gegen harte Tage hilft http://tinyurl.com/2c9sch... ;)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

birkenfeld hat geschrieben:
Leonidas hat geschrieben:
birkenfeld hat geschrieben:man braucht kein zusätzliches Modul importieren
Und bei os.system etwa nicht? ;) Sorry - das musste jetzt einfach sein, ich hatte einen harten Tag...
Nein, os ist eh immer importiert.
Komische Antwort :shock:

Nicht bei mir, nur wenn ichs brauche.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

sape hat geschrieben:
birkenfeld hat geschrieben:
Leonidas hat geschrieben:
birkenfeld hat geschrieben:man braucht kein zusätzliches Modul importieren
Und bei os.system etwa nicht? ;) Sorry - das musste jetzt einfach sein, ich hatte einen harten Tag...
Nein, os ist eh immer importiert.
Komische Antwort :shock:
Wieso?
Nicht bei mir, nur wenn ichs brauche.
Dann fragen wir mal so: Wie oft brauchst dus nicht? Noch dazu in einem Skript, wo offensichtlich systemnah gearbeitet wird...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Zumindest das gilt:

Code: Alles auswählen

blackbird@volverine:~$ python -c "import sys; print sys.modules.get('os')"
<module 'os' from '/usr/lib/python2.5/os.pyc'>
blackbird@volverine:~$ python -c "import sys; print sys.modules.get('subprocess')"
None
TUFKAB – the user formerly known as blackbird
Antworten