os.popen/os.system in einer schleife gleichzeitig? (3.2.2)

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
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

ruiin hat geschrieben:bei mir ist das immer eine Frage der Anwendung. Ich kann mir nicht so nen mitp "Taschenbuch" durchlesen, bei mir läuft das über Anwendung.
Ist bei mir genau so, dass ich eher nicht der Theoriemensch bin und auch ungerne theoretische Beispiele nachvollziehe, sondern mir viel lieber an praktischen Aufgabenstellungen neues Wissen erarbeite. Aber die Seite docs.python.org bietet umfangreiche Dokumentationen samt Suchfunktion an, wo du immer als erstes nachgucken solltest, bevor du mit deinen Fragen irgendwann an die Grenze des Nervens stößt (etwas schmeichelhaft ausgedrückt). Zudem ist Google dein Freund. Und gerade für Fragestellungen, die sich nicht so leicht in Suchworte fassen lassen (einfach weil einem nichts prägnantes zum Eingeben einfällt), da empfiehlt sich das Lesen von Tutorials. Hier zum Beispiel zum Thema Listen. Es gibt auch das "offizielle Python-Tutorial" (auch auf deutsch), welches eine ziemlich gute Anlaufstelle ist.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ruiin hat geschrieben:bei mir ist das immer eine Frage der Anwendung. Ich kann mir nicht so nen mitp "Taschenbuch" durchlesen, bei mir läuft das über Anwendung.
Also lieber Leute frustrieren, damit du nicht lesen musst? Nicht gerade die feine englische Art.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

snafu hat geschrieben:Wenn du ein neues Element an eine Liste hängen willst, dann musst du `.append()` auf dem Listenobjekt benutzen.
Und noch als Zusatz: Sofern die Länge der Liste bei der Erstellung bekannt ist (und das ist bei dir der Fall), dann kann man natürtlich direkt Listenliterale bei der Erstellung benutzen:

Code: Alles auswählen

syncs = [
    {"Name": "Eventkatalog", ...},
    {"Name": "Hauptkatalog", ...},
    {"Name": "Nachtkatalog", ...},
]
Das Komma am Ende tut übrigens nicht weh und erleichtert das Copy&Paste für weitere Zeilen.

Als spätere Optimierung liesse sich natürlich wunderbar ein Named Tuple verwenden, aber guck du erstmal, dass dein Programm überhaupt mal lauffähig wird. ;)
ruiin
User
Beiträge: 20
Registriert: Mittwoch 11. April 2012, 16:31
Wohnort: Essen

@Leonidas: Ich hatte nicht die Absicht hier Leute zu frustrieren. Ich hab schon ein paar Anleitungen durch, doch erst mit der Anwendung findet das bei mir Eingang. So sind so manche O'Reilly Bücher super geschrieben und haben Anwendungen die man auch nachprogrammieren kann, doch lernen tu ich erst wenn ich Fehler mache. So Beispiele sind dafür viel zu Flach um wirklich wo hängen zu bleiben. Bei Syntaxfehler übersieht man oft seine eigenen offensichtlichen Fehler und die Sache mit der Liste, das wusste ich einfach nicht. Auch hab ich momentan etwas Probleme mit dem Umstieg von 2.7 auf 3.2, hab mit 2.7 angefangen etwas zu scripten, und will aber eher 3.2 lernen. Ich finds es übrigens super hier Leute zu finden die weiter wissen wo Bücher versagen und ich verzweifel :wink: .

@Snafu: Der Code läuft und hab auch mal die Kommatar eingesetzt. Ich benutze erst einmal list.append() um die Liste zu erstellen, wenn ich dan so weit bin eine Art config-Datei zu benutzen muss ich die Abschnitte nur aneinander hängen. Danke vielmals.


Der Code:

Code: Alles auswählen

if __name__ == "__main__":
	import subprocess
 
	tool = "rsync"
	option = "-nav"
	
	syncs = []
	syncs.append({
				 "Name" : "Eventkatalog",
				"Quelle" : "/Volumes/fotos/Veranstaltungen/",
				"Ziel" : "rsync://jan@192.168.1.2/backup/eventk",
})
	syncs.append({
				"Name" : "Hauptkatalog",
				"Quelle" : "/Volumes/fotos/Hauptkatalog/",
				"Ziel" : "rsync://jan@192.168.1.2/backup/hauptk",
})
	syncs.append({ 
				"Name" : "Nachtkatalog",
				"Quelle" : "/Volumes/fotos/Nachtclubs/",
				"Ziel" : "rsync://jan@192.168.1.2/backup/nachtk",
})
	syncs.append({ 
				"Name" : "iTunes Library",
				"Quelle" : "/Users/Shared/iTunes/",
				"Ziel" : "rsync://jan@192.168.1.2/backup/itunes",
})
	syncs.append({ 
				"Name" : "Auftragskatalog",
				"Quelle" : "/Volumes/fotos/auftrk/",
				"Ziel" : "rsync://jan@192.168.1.2/backup/auftrk",
})
	
	for sync in syncs:
		try:
			print("{Name} in progress...".format(**sync))
			subprocess.check_output([tool, option, sync["Quelle"], sync["Ziel"]])
			print("...done")
		except subprocess.CalledProcessError as e:
			print("Fehler bei Datensatz: {}".format(sync["Name"]))
			print(e.returncode)
BlackJack

@ruiin: Warum machst Du das so umständlich mit den `append()`-Aufrufen? Schreib doch einfach gleich die Liste mit den Wörterbüchern dort hin, statt eine leere Liste und dann für jedes Wörterbuch `append()` aufzurufen.
Antworten