Datei auslesen

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.
huffman
User
Beiträge: 6
Registriert: Montag 10. Mai 2010, 15:01

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
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

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.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Du hast nach start menü Programme vergessen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Leonidas hat geschrieben:Python bringt aber die entsprechende Funktionalität mit, den Home-Ordner zu finden.
Wie geht das denn?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

``os.path.expanduser('~')`` etwa.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Danke, das funktioniert aber leider wird nicht der genaue Pfad angegeben ... :(
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Es gibt `os.path.abspath`, das haette dir aber auch die Dokumentation sagen koennen ...
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Wieso immer Dokumentation? Wieso nicht nen Link zu ner Referenz? Das würde mir meist mehr helfen! :roll:
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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! :)
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ja, sowas hab ich gemeint, Danke. :D
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

@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:
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Py-Prog, die Variante ist aber unuebersichtlicher und enspricht auch nicht PEP8.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Was ist PEP8?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Py-Prog hat geschrieben:Was ist PEP8?
das
Das Leben ist wie ein Tennisball.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

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.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
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.
Antworten