我想找到任何给定文件的完整路径,但是当我尝试使用时
os.path.abspath("file")
它只会将文件位置设置为运行程序的目录。有谁知道这是为什么或如何获得文件的真实路径?
答案 0 :(得分:2)
您希望在此处完成的是最终搜索您的文件系统。这样做效果不太好,因为你很可能有多个同名文件,所以你不确定你得到的第一个匹配实际上是你想要的文件。
我将举例说明如何使用简单的方法开始自己,这样可以遍历目录以便进行搜索。
您必须提供某种基本路径才能启动必须为此文件所在的路径进行的搜索。请记住,您越广泛,搜索的费用就越高。
您可以使用os.walk方法执行此操作。
以下是使用os.walk
的简单示例。这样做是收集具有匹配文件名的所有文件路径
使用os.walk
from os import walk
from os.path import join
d = 'some_file.txt'
paths = []
for i in walk('/some/base_path'):
if d in i[2]:
paths.append(join(i[0], d))
因此,对于os.walk上的每次迭代,您将得到一个包含的元组:
(path, directories, files)
这就是为什么我要检查位置i[2]
以查看文件。然后我加入i[0]
,这是路径,将完整的文件路径名称组合在一起。
最后,您实际上可以将上述代码全部放入一行并执行:
paths = [join(i[0], d) for i in walk('/some/base_path') if d in i[2]]