获取几个目录和子目录中的文件的绝对路径

时间:2012-06-29 13:10:23

标签: python python-3.x

我应该得到dir3中存在的文件的绝对路径。 路径是

"C:\\Workspace\\folder1\\folder2\\file"

我应该提供的唯一输入是文件的名称和C盘中主要目录的名称,即工作区。

我可以使用python中的任何内置函数获取绝对路径。我尝试使用此代码,但它给了我错误的结果:

import os

x='workspace'
y='file_name'
path_1=os.path.abspath("workspace/file_name")
print(path_1)

输出:

C:\Workspace\workspace\file_name

3 个答案:

答案 0 :(得分:0)

我认为它应该与

一起使用
os.path.abspath("workspace/file_name")

编辑: 几秒钟前我在python控制台中尝试过:

import os
os.path.abspath("Bachelor/simpleOpenCL.py")
'/home/julius/Bachelor/simpleOpenCL.py'

答案 1 :(得分:0)

内置版不能像那样工作但是你可以使用os中的一些方法轻松地创建自己的函数

假设python 3.0

os.walk

假设python 2.7

os.path.walk

基本上,您可以使用os.path.split()分割您给出的路径,然后使用head检查路径并检查尾部是否在结果中。如果找到它,可以在尾部执行os.path.abspath以获取该文件的abspath

def locate(headnname):
    abspaths = []
    head,tail = os.path.split(headnname)
    if not os.path.isdir(head):
        raise IOError("not a valid head: %s" % head)
    for dp,dn,fn in os.walk(head):
        if tail in fn:
            abspaths.append(dp+"/"+tail)
    return abspaths

输出:

>>> locate("D:/users/admin/pytools.py")
['D:/users/admin\\Programs\\AT_Plotter\\src/pytools.py',
 'D:/users/admin\\Programs\\py2exe/pytools.py',
 'D:/users/admin\\Programs\\pytools\\src/pytools.py',
 'D:/users/admin\\Shared\\pyIO/pytools.py',
 'D:/users/admin\\Shared\\pyIO\\Old/pytools.py']

答案 2 :(得分:0)

看看这个Active State Recipe

有用于执行递归文件搜索的函数定义

import os, fnmatch

def locate(pattern, root=os.curdir):
    '''Locate all files matching supplied filename pattern in and below
    supplied root directory.'''
    for path, dirs, files in os.walk(os.path.abspath(root)):
        for filename in fnmatch.filter(files, pattern):
            yield os.path.join(path, filename)

该功能的使用示例:

for x in locate("*.zip", "C:\\Temp"):
    print x