Seite 1 von 1
Hallo: datei herauslesen
Verfasst: Mittwoch 3. Juni 2009, 00:26
von max793
Hallo zusammen!
ich weiß nicht aber mein " 3- zeilen" file scheint einfach nicht das zu tun was ich will!
es müsste eigentlich den satz zeigen: es klappt" anzeigen wenn das Programm die datei "hallo3.txt" findet, aber es zeigt genau nichts an!! könntet ihr mal das kurz durchsehen woran es scheitern könnte!
Code: Alles auswählen
import os, os.path
datei = "hallo3.txt"
for root, dirs, files in os.walk('D:/probe/'):
if datei == files:
print "es klappt"
ich weiß schon langsam nicht mehr weiter! zu verständnis ich hahe einen Ordner (probe) der hat wieder ordner und in diesen sind einzelne dateien unteranderem auch "hallo3.txt" diese soll er suchen und letztendlich mir den pfad anzeigen das klappt ja mit
oder
danke nochmals
Verfasst: Mittwoch 3. Juni 2009, 00:50
von str1442
Schau dir doch nochmal die Doku zu os.walk() an und welche Art von Tupeln sie sukzessive zurückliefert. Warum heißt denn deine Variable "files"? Warum sollten mehrere Files denn gleich einem einzigen sein?
Für Pfade solltest du dir das os.path (insbesondere os.path.join()) Modul anschauen.
Hallo
Verfasst: Mittwoch 3. Juni 2009, 07:30
von max793
Danke für deinen Rat was ich mir nochmals ansehem muss! jedoch möchte ich noch wissen was man anstatt os.walk für einen Befehl nehmen kann um auf das gleiche Ergebnis zu kommen. ich weiß dass man mit dem befehl os.listdir in einen ordner sehen kann aber was macht man wenn man eine ebene tiefer schauen will?
das heißt nun ich habe einen ordner, in diesem sind eine menge ordner und in diesen nun sind die dateien die ich auflisten will um mir die richtige zu suchen um sie dann anschließend zu ersetzten.
Der grund meiner Frage ist jener, das ich auf Python 2.2.1 arbeite und ich keine möglichkeit habe diese Version zu ändern.
Danke
Verfasst: Mittwoch 3. Juni 2009, 08:18
von Rebecca
Die rekursive Suche kannst du dir mit os.listdir ja auch leicht selbst programmieren. Du kannst mir os.path.isdir etc. rausfinden, ob die Ergebnisse von os.listdir Dateien oder Verzeichnisse sind, im letzteren Fall musst du deine Prozedur mit ebendisem Verzeichnis wiederholen.
Verfasst: Mittwoch 3. Juni 2009, 09:05
von b.esser-wisser
Du kannst evtl auch einfach os.walk von einer neueren Pythonversion benutzen (z.B. von
Python 2.5, ohne
Garantie dass es geht

).
hth, Jörg
Verfasst: Mittwoch 3. Juni 2009, 09:11
von BlackJack
@max793: Deine Python-Version müsste eigentlich `os.path.walk()` kennen, wenn ich mich nicht irre.
hallo
Verfasst: Mittwoch 3. Juni 2009, 09:27
von max793
habe nun deinen hervorragenden Rat befolgt und nun mir einen eigenen Ablauf programmiert. jedoch habe ich nun probleme beim ersetztn der Datei durch eine andere. ich habe als erstes den befehl shutil.copy verwendet jedoch erhlate ich hier immer fehlermeldungen
Code: Alles auswählen
line 28, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: 'altdatei'
nun stelle ich mir die frage was das für ein problem genau ist ! damit ihr einen überblick habt hier mein code!
Code: Alles auswählen
import os, os.path, stat, shutil
dat = "hallo3.txt"
neuedatei = open("C:/daten/hallo1.txt", "r")
neuedatei.close()
for files in os.listdir("C:/daten/"):
pfad = os.path.join("C:/daten/" + files)
if os.path.isdir(pfad):
for datei in os.listdir(pfad):
#print datei
altdatei = pfad +"/" + datei
#print altdatei
if dat == datei:
shutil.copy("altdatei",neuedatei)
else:
print "ist keiner"
Danke
noch was ich verwende die version 2.2.1
Verfasst: Mittwoch 3. Juni 2009, 10:02
von Rebecca
Gibt es eine Datei, die altdatei heisst? Doch wohl nicht! Du willst in Zeile 18 nicht den String "altdatei" einsetzen, sondern den Namen selbst! (Gaensefuesschen!) Ausserdem sollte das zweite Argument kein Dateiobjekt sein, sondern ein Dateiname.
Du findest mit deinem Code natuerlich auch nur Dateien in zweiter Ebene, wenn die Verzeichnisstruktur weiter verschachtelt ist, kommst du so nicht weiter. Stichwort: Rekursive Funktionen.
Verfasst: Mittwoch 3. Juni 2009, 10:10
von BlackJack
Ich irrte micht nicht -- Python 2.2.1 kennt die
os.path.walk()-Funktion. Bevor man das Rad selbst neu erfindet…
hallo BlackJack
Verfasst: Mittwoch 3. Juni 2009, 12:07
von max793
danke das du dich bei meinem Problem schlau gemacht hast und mir das gesagt hast! mich würde nun jedoch interessieren wie groß der Unterschied ist zwischen meinen und der os.path.walk() funktion? leistung, dauer,...
Re: hallo BlackJack
Verfasst: Mittwoch 3. Juni 2009, 12:12
von Hyperion
max793 hat geschrieben:danke das du dich bei meinem Problem schlau gemacht hast und mir das gesagt hast! mich würde nun jedoch interessieren wie groß der Unterschied ist zwischen meinen und der os.path.walk() funktion? leistung, dauer,...
Probiere es doch aus! Gehe dieselben Verzeichnisse sequentiell mit beiden Methoden durch und miss die Zeit. Dazu gabs hier iirc schon einige Threads!