Datei-Pfad zum Ursprung zurückverfolgen

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
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

Hallo,

wie kann ich den Pfad eines files zurückverfolgen bis hin zum Laufwerk z.B. c: in welchem ich eine Datei, z.B. test.txt vermute.

unbekannt ist also der Weg und vielleicht sogar der Ursprung:
... / ... / ..../test.txt

Mit

Code: Alles auswählen

os.path.realpath() 
bekomme ich merkwürdigerweise einen Pfad über\Dokumente und Einstellungen\ angezeigt, obwohl das zu überprüfende Verzeichnis auf einem USB-Stick liegt.

Ebenso mit

Code: Alles auswählen

os.path.abspath()
Gruß
py-mule
jan_schmidt
User
Beiträge: 14
Registriert: Montag 19. April 2010, 16:35

py-mule hat geschrieben: wie kann ich den Pfad eines files zurückverfolgen bis hin zum Laufwerk z.B. c: in welchem ich eine Datei, z.B. test.txt vermute.

unbekannt ist also der Weg und vielleicht sogar der Ursprung:
... / ... / ..../test.txt
Wie weißt du dann wo deine Datei liegt, bzw. welche Datei du meinst?

Wird das Skript im selben Verzeichnis ausgeführt, dann ist das klar.
Hast du die Datei geöffnet, dann kennst du den Pfand in der Regel doch auch schon oder?
Oder geht es im Endeffekt darum eine Datei auf deiner Festplatte zu suchen?
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

Ich habe ein Tupel, in dem lediglich files, also z.B.Test.txt, drin stehen.
Ich möchte den Pfad von der Festplatte bis zum File ermitteln.
Mit einer Suche könnte es auch funktionieren. Wie könnte man das hinbekommen?
BlackJack

@py-mule: Du hast also nur den Dateinamen ohne Pfadangabe? Dann ist die Beschreibung Deines Problems falsch herum -- Du kannst nicht von einer Datei zum Laufwerk, sondern Du musst alle verfügbaren Laufwerke nach dem Dateinamen durchsuchen. Was zwei Probleme hat: Es kann sehr lange dauern und es muss nicht eindeutig sein, denn es kann ja mehrere 'Test.txt' auf den Laufwerken geben.
jan_schmidt
User
Beiträge: 14
Registriert: Montag 19. April 2010, 16:35

Nur mal so aus Interesse:

Wie sucht man denn vernünftig Dateien mit Python?

Eine Möglichkeit die mir unter Linux einfällt wäre

Code: Alles auswählen

os.system('find irgendwaszusuchen')
oder so...
BlackJack

@jan_schmidt: `os.walk()`, `os.stat()`, `os.path`, `glob`, `fnmatch`, …
problembär

und 'os.path.walk()'.

Hab' übungshalber auch mal selbst ein primitives 'find' geschrieben:

Code: Alles auswählen

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import os

def myfind(wd):

    a = os.listdir(wd)

    dirs = []

    for i in a:
        i = wd + "/" + i
        if os.path.isdir(i):
            dirs.append(i)

    for adir in dirs:

        print adir
        for afile in os.listdir(adir):
            print adir + "/" + afile

        print
        print

        # Recursion needed:
        myfind(adir)

myfind(os.getcwd())
Gruß
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Das schon genannte os.walk und vor allem os.sep kennst du aber schon, oder? Du nennst es ja und benutzt es dann doch nicht. Und vor allem, wo wird da was gefunden, denn einen Dateinamen kann ich ja nirgends übergeben ...
Oder ist das die Aufgabe für den Threadstarter?
Antworten