Seite 1 von 2

Datei auslesen

Verfasst: Montag 28. Juni 2010, 11:40
von huffman
Liebes Python-Board,

ich schreibe gerade an einem Script das über FTP meine Backups downloaden soll. Auf meinem Server gibt es ein Shell-Script welches mir Backups in .tar.gz Archive erstellt, und das Script schreibt in eine Datei, die Datei heißt "log" und sieht z.B. so aus:

201006281645
201006282050

Nach jedem Backup wird wieder neu in die Datei geschrieben.

Ich möchte nun das mein Script (wird bei jedem Systemstart ausgeführt) sich zu meinem FTP-Server verbindet, und anhand der "log" Datei prüft ob es neue Dateien gibt, alle Backups liegen als .tar.gz dann auf dem lokalem Rechner, wenn im log File also ein neuer Eintrag vorhanden ist soll zuerst geprüft werden ob die Datei(en) schon im lokalen Backup Verzeichnis sind. Falls nicht soll er die Downloaden.

Bisher sieht mein Script so aus:

Code: Alles auswählen

import ftplib
import os

ftp = ftplib.FTP("server.de", "user", "password")

ftp.sendcmd('CWD /backup')
backups = ftp.retrlines("RETR log")

print(backups)

x = os.listdir(os.getcwd())

ftp.retrbinary('RETR 201006281645.tar.gz', open('201006281645.tar.gz', 'wb').write)
ftp.quit()

Leider weiß ich nicht wie ich den Inhalt der log Datei (Variable backup) auslesen kann, ich würde das ganze ja in einem while- Schleife durchlaufen lassen, und prüfen, aber ich bin es gewohnt über backups[1] auf einen Eintrag zuzugreifen, ich verstehe hier nicht ganz was ich dazu tun muss.

Vielleicht hat einer von euch ja eine Idee,

danke gleich mal!

Huffi

Re: Datei auslesen

Verfasst: Montag 28. Juni 2010, 11:56
von .robert

Re: Datei auslesen

Verfasst: Dienstag 29. Juni 2010, 15:33
von Py-Prog
huffman hat geschrieben:Ich möchte nun das mein Script (wird bei jedem Systemstart ausgeführt)
Wie hast du das gemacht? Kannst du mir bitte (genau) sagen wie man das einrichtet? Ich will sowas änliches machen, da wär das mehr als sinvoll.

Re: Datei auslesen

Verfasst: Dienstag 29. Juni 2010, 15:36
von Dav1d
Py-Prog hat geschrieben:
huffman hat geschrieben:Ich möchte nun das mein Script (wird bei jedem Systemstart ausgeführt)
Wie hast du das gemacht? Kannst du mir bitte (genau) sagen wie man das einrichtet? Ich will sowas änliches machen, da wär das mehr als sinvoll.
Da gibts viele Möglichkeiten (ich gehe mal von Windows aus):
* ein Task
* Eintrag in der Registry (da gibts sehr viele Möglichkeiten => google)
* Autostart C:\Dokumente und Einstellungen\(Der User|All Users)\Startmenü\Autostart

//Edit: 666 :twisted: Beiträge

Re: Datei auslesen

Verfasst: Dienstag 29. Juni 2010, 19:26
von Py-Prog
Du hast nach start menü Programme vergessen.

Re: Datei auslesen

Verfasst: Dienstag 29. Juni 2010, 20:54
von /me
Py-Prog hat geschrieben:Du hast nach start menü Programme vergessen.
Der Satz ist sinnlos und hat auch nach kleiner gedanklicher Korrektur keine zutreffende Aussage.

Re: Datei auslesen

Verfasst: Dienstag 29. Juni 2010, 23:24
von Leonidas
Py-Prog meinte dass da noch eine Ordnerebene im Pfad zum "Autostart"-Ordner fehlt. Aber ich seh da andere Probleme: "C" ist nicht immer der Ort wo die Home-Verzeichnissse sind und diese heißen auch nicht immer "Dokumente und Einstellungen" sondern in neueren Windows-Versionen sprachneutral "Users". Python bringt aber die entsprechende Funktionalität mit, den Home-Ordner zu finden.

Re: Datei auslesen

Verfasst: Donnerstag 1. Juli 2010, 14:30
von Py-Prog
Leonidas hat geschrieben:Python bringt aber die entsprechende Funktionalität mit, den Home-Ordner zu finden.
Wie geht das denn?

Re: Datei auslesen

Verfasst: Donnerstag 1. Juli 2010, 14:53
von Leonidas
``os.path.expanduser('~')`` etwa.

Re: Datei auslesen

Verfasst: Donnerstag 1. Juli 2010, 18:41
von Py-Prog
Danke, das funktioniert aber leider wird nicht der genaue Pfad angegeben ... :(

Re: Datei auslesen

Verfasst: Donnerstag 1. Juli 2010, 20:17
von cofi
Es gibt `os.path.abspath`, das haette dir aber auch die Dokumentation sagen koennen ...

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 14:39
von Py-Prog
Wieso immer Dokumentation? Wieso nicht nen Link zu ner Referenz? Das würde mir meist mehr helfen! :roll:

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 14:46
von Rebecca
Auf docs.python.org findest du die Library-Reference und die Language Reference, oder was meinst du? Die Suchfunktion auf der Seite funktioniert auch hervorragend! :)

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 14:52
von Py-Prog
Ja, sowas hab ich gemeint, Danke. :D

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 15:10
von Py-Prog
@huffman du kannst die import anweisungen auch so schreiben:

Code: Alles auswählen

import ftplib, os
Bei vielen Modulen ist das Platzsparender und weniger zu schreiben. :wink:

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 15:11
von Rebecca
Py-Prog, die Variante ist aber unuebersichtlicher und enspricht auch nicht PEP8.

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 16:11
von Py-Prog
Was ist PEP8?

Re: Datei auslesen

Verfasst: Freitag 2. Juli 2010, 17:13
von EyDu
Py-Prog hat geschrieben:Was ist PEP8?
das

Re: Datei auslesen

Verfasst: Samstag 3. Juli 2010, 13:55
von Py-Prog
Ah, da ist festgelegt wie man die Programme schreiben sollte oder so ähnlich.
Aber wer schreibt schon :

Code: Alles auswählen

import time
import os
import os.path
import tkinter
import tkinter.filedialog
import tkinter.messagebox
import pygame
import visual
import math
import xturtle
...
und wenn das mit dem kommas nicht dem Syntax entsprechen würde, hätte es bei mir nie funktioniert.

Re: Datei auslesen

Verfasst: Samstag 3. Juli 2010, 17:00
von BlackJack
@Py-Prog: Das schreiben Leute so die schon mal grössere Programme geschrieben haben und den Überblick nicht verlieren wollen. Allerdings noch alphabetisch sortierten Gruppen für Importe aus der Standardbibliothek, fremden Bibliotheken, und den eigenen Modulen, die zum Programm gehören.

Wenn man möglichst viel in eine Zeile schreibt, das dann vielleicht noch nicht einmal alphabetisch sortiert, verliert man schnell mal den Überblick was man da alles schon stehen hat. Dann kommen öfter mal unnötige Mehrfachimporte vor, oder man hat Importe da drin, die man gar nicht mehr verwendet.

Noch kritischer wird es wenn man eine Versionsverwaltung verwendet und/oder mit mehreren Leuten an einem Projekt arbeitet. Wenn da jeder die Importe hinschreibt wie er will, gibt es schnell Mehrfachimporte und bei mehreren Importen pro Zeile gibt es schnell unnötige Konflikte, die von der Versionskontrolle nicht mehr automatisch aufgelöst werden können.

Ausserdem sollte man sich ab einer gewissen Anzahl von ``import``-Anweisungen auch fragen ob die Aufteilung in Module vielleicht besser gemacht werden könnte, weil das Modul dann wahrscheinlich für viel zu viel verantwortlich ist.