Seite 1 von 1

Datei-Pfad zum Ursprung zurückverfolgen

Verfasst: Dienstag 20. April 2010, 10:16
von py-mule
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

Re: Datei-Pfad zum Ursprung zurückverfolgen

Verfasst: Dienstag 20. April 2010, 12:27
von jan_schmidt
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?

Verfasst: Dienstag 20. April 2010, 14:27
von py-mule
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?

Verfasst: Dienstag 20. April 2010, 16:17
von 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.

Verfasst: Dienstag 20. April 2010, 16:47
von jan_schmidt
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...

Verfasst: Dienstag 20. April 2010, 17:05
von BlackJack
@jan_schmidt: `os.walk()`, `os.stat()`, `os.path`, `glob`, `fnmatch`, …

Verfasst: Dienstag 20. April 2010, 18:11
von 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ß

Verfasst: Mittwoch 21. April 2010, 07:52
von frabron
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?