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.
Hallo ihr,
ich hab ein Problem mit dem exclude bei meinem Tarfile..
und zwar springt er immer in return fullpath. ich weis nur nicht warum das falsch läuft
ich war mir so sicher das er oben reinspringt.
ich hoffe jemand kann mir helfen denn egal ob ich if oder if not eingeb er führt sources und excludes nicht aus
def get_path_if_not_excluded(self, dirname, filename):
fullpath = os.path.abspath(os.path.join(dirname, filename))
if not (os.path.isfile(fullpath) or os.path.isdir(fullpath)):
return None
for source in self.sources:
for exclude in self.allexcludes:
if fullpath.startswith(exclude):
return None
return fullpath
Ohne genau nachvollziehen zu können was du da machst: Warum printest du nicht einfach mal deine Bedingungen und den fullpath, dann siehst du doch, warum etwas nicht funktioniert. Das ist einfachstes debugging ...
das hab ich schon bei dem probiert wenn ich if eingeb und print "test" gibt er test aus aber sobald ich if not eingeb springt er nach return none.
die excludes und die Sources lässt er einfach raus.
ausserdem lässt er wenn ich if drin lasse die Sicherung auf 1kb aber das sind mehr Dateien als nur n kb
@eyescube: Du bist gerade wieder furchtbar ungenau bei der Beschreibung des Problems und was Du gemacht hast.
Du rufst das ja mit bestimmten Werten auf und erwartest ein bestimmtes Ergebnis. Geh den Code in Gedanken schritt für Schritt durch und überlege welcher Name zu welchem Zeitpunkt an welchen Wert gebunden ist. Und dann fügst Du ``print``-Anweisungen ein, welche die tatsächlichen Werte ausgeben und vergleichst die mit denen, die Du bei Deinen Überlegungen hattest. Dann siehst Du ja wo der Code und Deine Vermutungen auseinander laufen und kannst Überlegen warum das so ist, oder zur Not auch eine präzisere Frage stellen.
Wenn ich mal Vermuten müsste liegt das Problem bei den Schleifen. Das sieht nämlich teilweise unsinnig aus und ich habe da so eine Vermutung das der Test nicht das macht, bzw. auf den Daten ausgeführt wird, die Du denkst und haben möchtest. *Das* kannst *Du* aber auch ganz einfach durch die Ausgabe der Werte heraus finden.
BlackJack der Springt nicht in die for-schleife ich weis aber nicht warum denn er gibt wenn ich über der print fullpath eingeb und if einsetze kommt eben der Volle Pfad
bei if not springt er nach unten return fullpath
print 'Starting backup to archive "%s"...' % self.current_archive
tar = None
try:
if not os.path.exists(os.path.dirname(self.current_archive)):
os.makedirs(os.path.dirname(self.current_archive))
tar = tarfile.open(self.current_archive, 'w:bz2')
for directory in self.sources:
os.path.walk(directory, self.add_file, (tar, since_date))
print 'Backup to archive "%s" complete.' % self.current_archive
@eyescube: Die ``for``-Schleife wird ausgeführt -- es wird nicht einfach so Quelltext übersprungen oder nicht ausgeführt. Es kann sein das der Körper der Schleife nicht ausgeführt wird, aber dann hat das ja einen Grund. Der Schleifenkörper wird so oft ausgeführt wie Elemente in dem "iterable" nach dem ``in`` enthalten sind. Nun erklär doch mal was `self.sources` enthält. Und dann gib das vor der Schleife mal aus und schau ob es das ist was Du glaubst was es ist.
hätte er nich.....
er muss sich nich alles merken mir isses halt nur aufgefallen das die excludes einfach net übernommen werden...
die Sicherung an sich läuft nur die excludes bleiben nicht raus.
und die sources sind anders definiert.
hab das komplette script anders verfasst
ah ok Fehler gefunden Danke
Ja, genau wie dein Schreibstil.
Mal ernsthaft, erwartes du wirklich das wir das so einfach lösen können/wollen, obwohl uns 'zig Informationen fehlen. Wir haben noch nicht mal eine genaue Fehlerbeschreibung geschweige denn den eigentlichen Quellcode mal wirklich gesehen bzw. sehen wollen.
Bau dir ein minimal Beispiel das exakt das gleiche macht nur in einem kleineren Rahmen, dann kann man wenigsten Nachvollziehen was eigentlich passieren soll.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub