Jetzt ist zu spät. Du musst den Pfad dazuhängen, wenn du die Daten in die Liste reinsetzt, ansonsten geht der Pfad ja verloren.xwastedyouthx hat geschrieben:okeh, soweit so gut..alle gewünschten dateien sind in meiner liste.
jetzt muss ich nur noch die pfadangabe dazubekommen.
Zerlegung mit Trennzeichen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- xwastedyouthx
- User
- Beiträge: 27
- Registriert: Montag 20. August 2007, 13:19
ich hätte das ganze jetzt in eine zweite liste geschrieben sodass
folder[1] und datei[1] zusammenpassen.
aber wie ich beides zusammen in eine kriege weiss ich nicht.
habe schon mehrere möglichkeiten probiert, bekomme das nicht hin.
die pfadangabe kann ich mir anzeigen lassen, passt dann auch, aber sobald ich sie in eine liste oder sonstwas reinschreibe kommt da nur käse bei rum.
so wird es angezeigt.
was hab ich denn jetzt wieder falsch gemacht bzw nicht bedacht?
folder[1] und datei[1] zusammenpassen.
aber wie ich beides zusammen in eine kriege weiss ich nicht.
habe schon mehrere möglichkeiten probiert, bekomme das nicht hin.
die pfadangabe kann ich mir anzeigen lassen, passt dann auch, aber sobald ich sie in eine liste oder sonstwas reinschreibe kommt da nur käse bei rum.
so wird es angezeigt.
Code: Alles auswählen
#hier mit print:
c:/test\test2\ddfggffdfd
#hier mit folders.extend(root)
['c', ':', '/', 't', 'e', 's', 't', 'c', ':', '/', 't', 'e', 's',
, 'e', 's', 't', '1', 'c', ':', '/', 't', 'e', 's', 't', '\\', 't'
', '1', '\\', 'a', 's', 'd', 'f', 'g', 'c', ':', '/', 't', 'e', 's
't', 'e', 's', 't', '2', 'c', ':', '/', 't', 'e', 's', 't', '\\',
't', '2', '\\', 'd', 'd', 'f', 'g', 'g', 'f', 'f', 'd', 'f', 'd']
Du hast `extend()` benutzt statt `append()`. `append()` hängt das Argument als *ein* Element an eine Liste, `extend()` hängt den die einzelnen Elemente des Arguments an eine Liste. Und eine Zeichenkette besteht nun mal aus einzelnen Buchstaben.
Zwei Datenstrukturen die sozusagen parallel laufen sollte man vermeiden. Wenn Daten zusammengehören sollte man sie auch in einer Datenstruktur halten. Also entweder Tupel von Pfadname und Dateinamen an die Liste anhängen oder gleich mit `os.path.join()` einen kompletten Dateinamen mit Pfad zusammensetzen und an die Liste anhängen.
So wie Du das möchtest müsste man sonst in die Pfad-Liste den gleichen Pfad so oft hineinstecken, wie man Dateinamen in der Liste hat.
Zwei Datenstrukturen die sozusagen parallel laufen sollte man vermeiden. Wenn Daten zusammengehören sollte man sie auch in einer Datenstruktur halten. Also entweder Tupel von Pfadname und Dateinamen an die Liste anhängen oder gleich mit `os.path.join()` einen kompletten Dateinamen mit Pfad zusammensetzen und an die Liste anhängen.
So wie Du das möchtest müsste man sonst in die Pfad-Liste den gleichen Pfad so oft hineinstecken, wie man Dateinamen in der Liste hat.
- xwastedyouthx
- User
- Beiträge: 27
- Registriert: Montag 20. August 2007, 13:19
so, folgendes habe ich jetzt zusammengestrickt:
os.walk schreib pro ordner in einem durchgang mehrere namen gleichzeitig in meine "liste" rein.
in die "templiste" sollen die infos mit pfadangabe. bei 5 mal auslesen habe ich dann teilweise 10 dateinamen, aber nur 5 pfadangaben, weil halt manchmal 2 in einem ordner sind.
ich vermute das ich einfach nur irgendwie anders counten muss damit es funktioniert. nicht pro durchgang sonder pro gefundenem eintrag.
aber wie.
Code: Alles auswählen
z = 0
# ordner inklusive unterordner durchsuchen nach files
for root, dirs, files in os.walk('c:/test'):
liste.extend(files)
dateiname = liste[z]
fileandpath = os.path.join(root,dateiname)
templist.append(fileandpath)
z = z +1
in die "templiste" sollen die infos mit pfadangabe. bei 5 mal auslesen habe ich dann teilweise 10 dateinamen, aber nur 5 pfadangaben, weil halt manchmal 2 in einem ordner sind.
ich vermute das ich einfach nur irgendwie anders counten muss damit es funktioniert. nicht pro durchgang sonder pro gefundenem eintrag.
aber wie.
Der Vollständigkeit halber:
Edit: Habe ich das richtig verstanden, dass du einfach nur die String-Repräsentation von Python-Listen in eine Datei geschrieben hast und diese wieder einlesen willst?
Code: Alles auswählen
>>> import yaml
>>> x = yaml.safe_load("['hallo.txt', 'du.txt', 'affe.txt']")
>>> x
['hallo.txt', 'du.txt', 'affe.txt']
>>> type(x)
<type 'list'>
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
So sollte es gehen:
Code: Alles auswählen
liste = []
for root, dirs, files in os.walk("bla"):
for f in files:
liste.append(os.path.join(root, f))
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- xwastedyouthx
- User
- Beiträge: 27
- Registriert: Montag 20. August 2007, 13:19
@ Rebecca
Danke, das ist genau das was ich gesucht habe.
funktioniert einwandfrei.
@Yogi:
wenn ich mal selber wüsste was ich will / wollte...
Danke an alle, habe viel gelernt!
Danke, das ist genau das was ich gesucht habe.
funktioniert einwandfrei.
@Yogi:
wenn ich mal selber wüsste was ich will / wollte...
Danke an alle, habe viel gelernt!