2013-07-18 87 views
9

试图钻取我的驱动器中具有子折叠器的目录。当我找到具有我正在查找的文件扩展名的文件时,我需要完整的文件路径。现在,这是我有:Python无法获得文件的完整路径名称

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 

这是返回

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

但是该file.txt的位于

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

回答

8

您可能需要使用包含它的目录中加入文件名:

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

例如我只是测试这一点:

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 

具有以下目录结构:

test 
    + foo 
    + test2 
    + foo 

和它的工作正常。

+1

完美谢谢你!不知道为什么我在这个问题上接受了投票,当时已经问过的另一个问题甚至没有回答我自己的问题... – shreddish

+0

@reddman - FWIW,我也不明白downvotes。我upvoted。 :) – mgilson

+0

哈哈再次感谢你 – shreddish

0

用途:

os.path.abspath 

代替。你的道路不是绝对的。

+0

我已经试过abspath它返回相同的结果 – shreddish