Python 3.0 Windows : Verzeichnis-Strukturen

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
M.Kalavera
User
Beiträge: 6
Registriert: Sonntag 13. Juni 2010, 10:05

Hallo Leute,

ich habe seit längerem ein Problem mit Python unter Windows, dass es so unter Unix für mich nicht gab (es muß jetzt aber windows sein):

Irgendwie schaffe ich es nicht, gezielt eine Datei in einen bestimmten Ordner zu speichern. Daher habe ich immer alle Datein genau in dem Ordner, in dem auch das Programm läuft. Das ist natürlich nicht gerade übersichtlich und geht auch nur bei den ersten kleinen Programmen. Meine Idee ist es, dass man einen festen Folder angibt und dahin speichert oder von dort etwas hohlt. Mein Ziel ist es nämlich ein Backup zu schreiben, dass einfach komplett einen Ordner mit allen Unterordnern auf ein anderes Laufwerk speichert.
Das ist mir unter Windows wirklich noch nicht gelungen und ich kenne nur die Walk funktion mit der man unterverzeichnisse findet, ausgehend von dem Ordner in dem das Programm liegt.
Bitte helft mir hier weiter, auch wenn die frage vieleicht echt totales Anfänger Niveau hat.

Beste Grüße,
M.Kalavera
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

M.Kalavera hat geschrieben:Irgendwie schaffe ich es nicht, gezielt eine Datei in einen bestimmten Ordner zu speichern.
Ich hoffe mal, dass du anders als in der Überschrift angegeben, nicht Python 3.0, sondern 3.1 verwendest. Python 3.0 hat seinen end-of-life Status bereits erreicht.

Ich habe nicht wirklich verstanden womit genau du Probleme hast. Der Funktion open() kannst du doch problemlos einen Pfad und Dateinamen übergeben.

Code: Alles auswählen

fp = fopen("C:\\Temp\\file.tmp", "w")
M.Kalavera
User
Beiträge: 6
Registriert: Sonntag 13. Juni 2010, 10:05

Geht das auch mit der Kopier funktion ?

Ich würde dann einfach ein Dokument anlegen, in dem alle Pfade stehen, also z.B:

"c:\\temp\\"
"c:\\xyz\\"

Das würde ich dann einlesen und ich möchte das er dann die unterordner alle mitkopiert an eine neue stelle. Also im Prinzip will ein Backup Script machen. Das problem ist, dass es viele Leute nutzen sollen und jeder hat andere Daten und Ordner die er sichern will. Kann man irgendwie einfach Ordner samt unterordner kopieren ?
Beste Grüße,
M.Kalavera
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

shutil.copytree
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
M.Kalavera
User
Beiträge: 6
Registriert: Sonntag 13. Juni 2010, 10:05

Wunderbar
shutil.copytree() ist genau das was ich suche.
Kann man damit auch bestehnde Ordner überschreiben? Es wird nicht nötig sein für mich, aber ich wüßte gerne generell, ob es eine Funktion/Parameter gibt, der das Überschreiben von bereits bestehenden Ordnern erlaubt.

Ein anderer Punkt wäre für mich die Frage nach einer "Chrontab" ähnlichen Funktion für mein Backupscript :

Ich habe mir gedacht, ich stecke es in den Autostart und lasse über diese Funktion :

Code: Alles auswählen

time.strftime("%d_%m_%Y")
auslesen welches Datum ist. Jeden 7. Tag soll das Programm dann gestartet werden. Findet ihr das sinnvoll oder nicht? Gibt es risiken oder eine elegantere Methode ???

Danke für die Hilfe im Voraus.
BlackJack

@M.Kalavera: Ich bin kein Windows-Experte aber soweit ich weiss gibt es auch unter Windows einen Dienst über den man Programme zu vorgegebenen Zeiten starten kann!?
M.Kalavera
User
Beiträge: 6
Registriert: Sonntag 13. Juni 2010, 10:05

Das wäre mir neu mit der Chronofunktion in Windows.
Aber ich kenne mich auch nicht so gut aus unter Windows...
Wenn es die wirklich gibt, wäre das doch eine schöne Alternative zum Autostart, oder ?
Gibt es Timerfunktionen für Python die an die Systemzeit gekoppelt sind ?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

M.Kalavera hat geschrieben:Ich würde dann einfach ein Dokument anlegen, in dem alle Pfade stehen, also z.B:

"c:\\temp\\"
"c:\\xyz\\"
Moment. Wenn das eine von Python eingelesene Datei ist, also kein Python-Code, dann solltest du den doppelten Backslash natürlich nicht verwenden.
M.Kalavera
User
Beiträge: 6
Registriert: Sonntag 13. Juni 2010, 10:05

Kannst du mir das mit dem doppelten Backs-slash erklären ?
Wenn ich den Code in Python eingebe will er immer den doppelten backsslash
Falls ich eine Datei mit Pfaden angeben würde, müsste ich dann
C:\temp\ oder C:\\temp\\ oder "C:\temp\" rein schreiben damit er den Pfad richtig verwendet ?

Falls das jetzt total undeutlich war: Erklär mir am besten einfach mal den Unterschied zwischen einfachem und doppelten Backsslash und deren Anwendung...

Lösung des Chrontab-Problems unter Windows:

In XP gibt es den Taskplaner unter Systemsteuerung. Da kann man Exe Files ausführen lassen in Chronologischen Abständen. Das war ein gute Tipp !
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

das hat /me kürzlich hier beschrieben:
http://www.python-forum.de/viewtopic.ph ... 57#p171957

der \ hat eine spezielle Bedeutung in Strings und muss daher escaped werden durch \\ Oder du verwendest raw Strings dort hat der \ keine spezielle Bedeutung:

Code: Alles auswählen

r"dies ist ein raw string, der \ kann hier einfach geschrieben werden"
Antworten