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

system() in Python?

Beitragvon Klip » Donnerstag 1. Februar 2007, 14:38

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:

Beitragvon EnTeQuAk » Donnerstag 1. Februar 2007, 14:51

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

Beitragvon skypa » Donnerstag 1. Februar 2007, 14:52

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

Beitragvon Klip » Donnerstag 1. Februar 2007, 14:54

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

Beitragvon sape » Donnerstag 1. Februar 2007, 15:25

``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:

Beitragvon EnTeQuAk » Donnerstag 1. Februar 2007, 15:39

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

Beitragvon sape » Donnerstag 1. Februar 2007, 16:13

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

Beitragvon birkenfeld » Donnerstag 1. Februar 2007, 17:25

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

Beitragvon sape » Donnerstag 1. Februar 2007, 17:28

Ja das stimmt schon ;) Aber meist sind die Aufrufe ehe nicht "leicht".
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 1. Februar 2007, 18:32

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 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

Beitragvon birkenfeld » Donnerstag 1. Februar 2007, 18:59

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

Beitragvon sape » Donnerstag 1. Februar 2007, 19:03

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

Beitragvon birkenfeld » Donnerstag 1. Februar 2007, 19:57

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/
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Freitag 2. Februar 2007, 07:40

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder