Brauche Hilfe bei einem Such-und-Kopier Programm

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.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 25. November 2008, 15:02

Die Ausgabe von abs_path... So wie hier: http://paste.pocoo.org/show/92515/

(Zuviel Sourcecode funktioniert hier im Forum nicht so besondern, scheiß phpBB)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

Dienstag 25. November 2008, 15:07

Iteration über ein File behält das \n am Ende des Files:

>>> f = open('test.txt', 'r')
>>> for l in f:
... print repr(l)
...
'bla\n'
'fasel\n'
'schnack\n'
'\n'
>>>

Das stört dann im Dateinamen.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 25. November 2008, 15:09

Kann man in strip entfernen, siehe: http://paste.pocoo.org/show/92517/

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Dienstag 25. November 2008, 15:14

so hab soweit alles befolgt und ich glaube ihr habt mir bald den arsch gerettet xD

neue ausgabe:

Code: Alles auswählen

C:\Dokumente und Einstellungen\Wesp\Desktop
Datei: 1I01856_204G-2C01730_20K-I-1.jpg
V:\2\C\68.31.5-05-105480\1I01856_204G-2C01730_20K-I-1.jpg
V:\2\C\68.31.5-05-106337\1I01856_204G-2C01730_20K-I-1.jpg
V:\2\C\68.31.5-05-106643\1I01856_204G-2C01730_20K-I-1.jpg
V:\2\C\68.31.5-05-107359\1I01856_204G-2C01730_20K-I-1.jpg
V:\2\C\68.31.5-05-110265\1I01856_204G-2C01730_20K-I-1.jpg
Gefunden in: V:\2\C\68.31.5-05-110265\1I01856_204G-2C01730_20K-I-1.jpg
kopiere...

Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\Wesp\Desktop\suchkopiermaschine3", line 50, in <module>
    shutil.copyfile(abs_path, DEST_DIR)
  File "C:\Python26\lib\shutil.py", line 53, in copyfile
    fdst = open(dst, 'wb')
IOError: [Errno 13] Permission denied: 'C:\\gesuchte Bilder'
ich nehme einfach mal stark an, dassder 2te \ hier nicht hingehört oder?^^


EIN GROßES THX AN ALLE SCHON JETZT 1000MAL!!!^^
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 25. November 2008, 15:17

Ne, nochmal ein Fehler meinerseits, siehe: http://paste.pocoo.org/compare/92520/92517/

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Dienstag 25. November 2008, 15:22

JOOOOOO :shock: wie das abgeht!!!^^
ICH DANKE EUCH ALLEN VIELMALS!!!! :lol: :lol: :lol: :lol:
ihr seid die besten echt^^
das hat mir jetzt ca 1ne woche sucharbeit erspart!!^^ :lol: :lol:
ne ehrlich jetzt THX AN ALLE!!!! vorallem jens muss ich danken^^
aber trotzdem ALLEN EINEN GREATEN DANK!!!!
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Mittwoch 26. November 2008, 10:41

sry dass ich sconwieder ankomme aber es gibt da ein kleines problem...
es gibt bilder die den gleichen namen haben aber unter einem anderem pfad gespeichert sind... es sind aber unter gleichem namen trotzdem unterschiedliche bilder...
das heist das programm müsste nicht nur bis zum ersten fund suchen und kopieren, sondern jeden namen in jedem ordner suchen und jeden fund kopieren...

eine ahnung wie man das jetzige programm so umschreibt, dass es weitersucht und die datei dann aber nicht überschreibt sondern zB eine (2) anhängt...
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 26. November 2008, 10:51


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Mittwoch 26. November 2008, 10:58

er kopiert wohl die erste datei und dann bringt er die fehlermeldung:

Datei: 1I01856_204G-2C01730_20K-I-1.jpg
Gefunden in: V:\2\C\68.31.5-05-110265\1I01856_204G-2C01730_20K-I-1.jpg
C:\gesuchte Bilder2\1I01856_204G-2C01730_20K-I-1.jpg
Kopiere nach: C:\gesuchte Bilder2\1I01856_204G-2C01730_20K-I-1.jpg

Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/Wesp/Desktop/Search-Copy/sc", line 59, in <module>
shutil.copyfile(abs_path, dest)
NameError: name 'abs_path' is not defined
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Mittwoch 26. November 2008, 11:05

Ich bin ja nun wahrlich kein Moralapostel und bin immer froh, wenn mir geholfen wird, aber versuch doch einfach mal so eine Fehlermeldung selbst zu beheben. Die sagt dir doch recht deutlich, was los ist. In Zeile 59 wird als Argument abs_path übergeben - das wurde aber in dem Namensbereich nicht definiert. Also: was erwartet shutil.copyfile() für Argumente? Offensichtlich Start- und Zielpfad. Dann musst du jetzt halt gucken, wo du den Startpfad herbekommst... Einfach mal ausprobieren. :-)

Außerdem würdest du bei einem Blick in den Quelltext sofort erkennen, dass er überhaupt nichts kopieren muss bei der Ausgabe. Die print-Anweisung steht nämlich vor dem entsprechenden Befehl.
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Mittwoch 26. November 2008, 12:29

sorry aber komm damit irgendwie nicht klar...
natürlich muss ich den startpfad angeben... nur weis ich nicht welcher der startpfad ist... habe jetzt versucht gehabt abs_path = filelist zu setzten aber da bringt er mir jetzt noch mehr fehlermeldungen.. glaube er will nicht, dass beide den gleichen pfad bekommen...

wäre echt wichtig dass das bald geht... sonst bekomm cih stress mitm chef... bitte bitte helft mir nochmal.... :( :(
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Mittwoch 26. November 2008, 15:42

Ich kann das Skript nicht testen, aber vom schnellen drübergucken:

Ja, dann musst du dich halt fragen warum das so ist. filelist beinhaltet den Rückgabewert der Funktion find_file. Und wenn du da jetzt einmal in die Funktion guckst, dann siehst du, dass es sich dabei um eine Liste handelt. Also hast du jetzt versucht eine Liste an shutil.copyfile() zu übergeben, die ja aber scheinbar einen String erwartet (wenn ich das heute mittag richtig gesehen habe).

In der Liste sollten aber die Pfade drin stehen. Also brauchst du das jeweilige Element aus der Liste. Du iterierst in Zeile #48 über diese Liste. Und was ist jetzt wohl path aus selbiger Zeile?

Code: Alles auswählen

for path in filelist:
Bau dir doch einmal ein paar print-Anweisungen ein, um dir auszugeben was da so in den Variablen steht. Und ansonsten hilft auch das hier: docs.python.org (sind allerdings die 2.6er)
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Mittwoch 26. November 2008, 16:08

oh thx^^ so wies aussieht funktionert das alles jetzt sogar... ma schaun ob wirklich alles so läuft wie es sollte...

also ich hab jetzt eig nur aus dem abs_path ein path gemacht...
hab mir gedacht, dass obendrüber ja eig der pfad ausgegeben wird wo er die datei gefunden hat... also hab cih path genommen xD

ist das richtig? xD xD xD xD

mfg striker
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Mittwoch 26. November 2008, 16:39

SvL_Striker hat geschrieben: ist das richtig? xD xD xD xD
Ja...

Wobei ich die Lösung nicht optimal finde. Kommt die Datei mehr als hundert Mal vor kracht dir das zusammen. Mit enumerate müsste das einfacher gehen.
SvL_Striker
User
Beiträge: 16
Registriert: Dienstag 25. November 2008, 10:42

Donnerstag 27. November 2008, 09:22

jo es funktioniert... nur glaube ich, dass noch ein kleiner fehler drinne ist...
wenn ich das jetzt aus dem quellqode richtig interpretiere...
und zwar...
er sucht einen namen... findet ihn... kopiert ihn...
wenn der name nochmal in der liste vorkommt... sucht er ihn... findet ihn... will ihn kopieren... gibts schon... macht eine zahl (0-100 in der reihenfolge) dran... kopiert die datei rein... jedoch müsste es doch eigendlich schonwieder die gleiche Datei sein oder?... die die er als erstes findet...
er sollte aber eigendlich alle ordner nach dem namen durchsuchen und wenn die datei 2 oder 3 mal in unterschiedlichen ordnern ist... findet er immer nur die 1. und kopiert nur diese...

könnte man nicht noch eine zeile einfügen, mit der er weis, dass er IMMER alle ordner durchsuchen soll und jedes mal kopiert und nicht nach dem ersten fund nur kopieren und die nächste suchen?

wäre das noch möglich oder ist das nicht zu realisieren?

tutu mir wirklich leid dass ich hier so nerve...
Antworten