Hallo, ich bin noch nen Frischling bei Python und hab mich ma am Scripten versucht. Nun bin ich auf ein Problem gestoßen welches mir etwas kopfzerbrechen bereitet.
Ich schreibe ein script was diverse befehle in der Shell von Linux ausführt.
dazu verwende ich
os.system()
Darin habe ich dann den Befehl. Nun habe ich die befehle zerlegt und teilweise versucht pfade durch variablen zu ersetzten so ist dann folgendes konstrukt entstanden:
os.system("string", variable, "string") was leider nicht geht da os.system nur ein argument nimmt. Jedoch wenn ich alles vorher auf eine variable lege bsp:
systemvariable="string", variable, "string"
os.system(systemvariable)
bekomm ich die meldung dass os.system() nur Strings und keine tuple nimmt. Gibt es eine möglichkeit variablen in strings einzubetten ?
Prob mit Argumenten
Code: Alles auswählen
s1 = 'Hallo '
s2 = 'Welt'
s3 = '!'
print s1, s2, s3
print s1+s2+s3
print ''.join((s1,s2, s3))
Statt os.system solltest du dir lieber subprocess angucken.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
subprocess habe ich mir schon einmal angeschaut, aber ehrlich gesagt habe ich da garnicht durchgesehen. Ich habe es verwendet um mir eine Ausgabe aus der shell zunutze zu machen aber im allgemeinen wirkt os.system für mich einfacher oder gibt es da starke vorteile ?
Eine weitere Möglichkeit Zeichenketten zusammen zusetzen ist:
Da kann man natürlich noch Klammern drum herum machen und damit geht dass über mehrere Zeilen.
Code: Alles auswählen
"foo" "bar" "baz"
kansnt du mir ein beispiel geben wie man das anwendet ? kann mir das in der praxis grad nicht wirklich vorstellen.
und zum thema subprocess: liege ich falsch mit der erkenntnis dass wenn ich den befehl subprocess benutze in den klammen jeden Befehel so oft mit "" teilen muss wie lehrzeichen sind oder hat die folge der argumente ne bestimmte bedeutung bsp:
subprocess.Popen([r"tar", "-xf", "xyz.tgz", "/pfadx"])
müsste man das dann immer so schreiben oder wie funzt die argumentenfolge genau ?
und zum thema subprocess: liege ich falsch mit der erkenntnis dass wenn ich den befehl subprocess benutze in den klammen jeden Befehel so oft mit "" teilen muss wie lehrzeichen sind oder hat die folge der argumente ne bestimmte bedeutung bsp:
subprocess.Popen([r"tar", "-xf", "xyz.tgz", "/pfadx"])
müsste man das dann immer so schreiben oder wie funzt die argumentenfolge genau ?
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
In [47]: "Dann " "probiers " "aus"morytox hat geschrieben:kansnt du mir ein beispiel geben wie man das anwendet ? kann mir das in der praxis grad nicht wirklich vorstellen.
Out[47]: 'Dann probiers aus'
Nein, mit leeren Strings trennt man ueberhaupt nichts. Aber alles, das mit Leerzeichen getrennt werden soll ist ein Listenelement (Liste = []).morytox hat geschrieben:und zum thema subprocess: liege ich falsch mit der erkenntnis dass wenn ich den befehl subprocess benutze in den klammen jeden Befehel so oft mit "" teilen muss wie lehrzeichen sind oder hat die folge der argumente ne bestimmte bedeutung bsp:
Die Reihenfolge ist genau die, die du auch sonst eingeben wuerdest.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Ich denke mal, das mit den Leerzeichen war darauf bezogen, dass man normalerweise in der Shell die Parameter mit Leerzeichen trennt, von daher war die Aussage schon richtig. Und da man in der Shell dann ein wenig Aufwand betreiben muss, wenn man mal Parameter hat, die ein Leerzeichen enthalten sollen, loest man das mit subprocess halt viel angenehmer mit einer Liste.
Code: Alles auswählen
subprocess.Popen(["ls", "-l", "Meine Dokumente"])
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei