2013-07-18 15 views
9

Próba przejrzenia katalogu na dysku, który zawiera podfoldery. Gdy znajdę pliki, które mają rozszerzenia plików, których szukam, chcę mieć pełną ścieżkę do pliku. Teraz to, co mam:Python nie może uzyskać pełnej nazwy ścieżki pliku

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 

ta jest zwracana

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

jednak, że plik.txt znajduje się w

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

Odpowiedz

8

Musisz dołączyć nazwę pliku z katalogu, który go zawiera:

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

np I właśnie przetestowane:

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 

o następującej strukturze katalogów:

test 
    + foo 
    + test2 
    + foo 

i to działało poprawnie.

+1

pracował doskonale dziękuję! nie jestem pewien, dlaczego otrzymywałem głosowanie w dół, gdy inne pytanie, które zostało już zadane, nie odpowiedziało nawet na moje własne pytanie ... – shreddish

+0

@reddman - FWIW, nie zrozumiałem też ani słów kluczowych. Przegłosowałem. :) – mgilson

+0

haha ​​dziękuję jeszcze raz – shreddish

0

użytku:

os.path.abspath 

zamiast . Twoja ścieżka nie jest absolutna. Prawdopodobnie

+0

Próbowałem abspath to zwraca ten sam wynik – shreddish