Hallo: datei herauslesen

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.
Antworten
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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

Code: Alles auswählen


pfad = 'root + '/' + datei'

oder

danke nochmals
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

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.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

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
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
BlackJack

@max793: Deine Python-Version müsste eigentlich `os.path.walk()` kennen, wenn ich mich nicht irre.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
BlackJack

Ich irrte micht nicht -- Python 2.2.1 kennt die os.path.walk()-Funktion. Bevor man das Rad selbst neu erfindet…
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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,...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!
Antworten