2013-07-18 5 views
9

Ich versuche, ein Verzeichnis auf meinem Laufwerk zu durchsuchen, das Subfolders enthält. Wenn ich Dateien mit den Dateierweiterungen finde, nach denen ich suche, möchte ich den vollständigen Dateipfad. Gerade jetzt ist es das, was ich habe:Python kann den vollständigen Pfadnamen der Datei nicht erhalten

import os 
import Tkinter 
import tkFileDialog 
from Tkinter import Tk 
from tkFileDialog import askopenfilename 

root = Tkinter.Tk().withdraw() 
dirname = tkFileDialog.askdirectory(initialdir='.') 

list = [] 


for root, dirs, files in os.walk(dirname): 
    for name in files: 
     if name.find(".txt") != -1: 
      name = str(name) 
      name = os.path.realpath(name) 
      list.append(name) 

print list 

Diese

zurückgegeben
c:\users\name\desktop\project\file.txt 

jedoch, dass datei.txt in

c:\users\name\desktop\project\folder1\file.txt 

Antwort

8

Sie müssen wahrscheinlich den Dateinamen mit dem Verzeichnis verbinden, die es enthält:

os.path.realpath(os.path.join(root,name)) 

z.B. Getestet habe ich nur das:

import os 
for root, dirs, files in os.walk('.'): 
    for name in files: 
     if name == 'foo': 
      name = str(name) 
      name = os.path.realpath(os.path.join(root,name)) 
      print name 

mit folgenden Verzeichnisstruktur:

test 
    + foo 
    + test2 
    + foo 

und es funktionierte einwandfrei.

+1

hat perfekt funktioniert danke! Ich bin mir nicht sicher, warum ich da unten Stimmen bekommen habe, als die andere Frage, die bereits gestellt wurde, nicht einmal meine eigene Frage beantwortet hat ... – shreddish

+0

@reddman - FWIW, ich habe die downvotes auch nicht verstanden. Ich habe gestimmt. :) – mgilson

+0

haha ​​danke nochmal – shreddish

0

Verwendung befindet:

os.path.abspath 

statt . Dein Weg ist nicht absolut.

+0

Ich habe versucht Abspath es gibt das gleiche Ergebnis zurück – shreddish

Verwandte Themen