打印文件的完整路径

时间:2015-07-14 13:12:37

标签: python-3.x

我想在计算机中找到文件的完整路径(名称是用户输入)。我尝试了os.path.dirname(filename)os.path.abspath(filename),但它只是返回添加到当前工作目录的文件的路径。

例如,让IntelGFX.txt成为路径为C:\Intel\Logs\IntelGFX的文件,但我使用os.path.abspath('IntelGFX')创建的路径为C:\Python34\IntelGFX

那么如何获取文件的原始路径?

2 个答案:

答案 0 :(得分:0)

  

所有[abspath]的作用是返回添加到当前工作目录的文件的路径

嗯,根据the documentation

  

在大多数平台上,[abspath]相当于按以下方式调用函数normpath()normpath(join(os.getcwd(), path))

所以这个预期的行为。想一想 - 如果只是给它一个文件名,那么应该 Python在哪里?你不能只是期望它开始在任何地方搜索它!

如果这是你想要的行为,你需要明确地实现它;见例如Find a file in python

答案 1 :(得分:0)

所以你想在文件系统中搜索具有给定名称的文件?这将不会很快,具体取决于您必须搜索的文件数量。

您可能想尝试使用os.walk。您可以使用它来遍历给定根目录中的所有文件。在下面我用它来查找所有名为" tests"在我的python安装位置。

import os
from os.path import join, getsize
from itertools import chain

target = "tests"
path = "c:\\Python34"

found = []
for root, dirs, files in os.walk(path):
    for name in chain(files, dirs):
        if name == target:
            found.append(join(root, name))

print(found)