我想在计算机中找到文件的完整路径(名称是用户输入)。我尝试了os.path.dirname(filename)
和os.path.abspath(filename)
,但它只是返回添加到当前工作目录的文件的路径。
例如,让IntelGFX.txt
成为路径为C:\Intel\Logs\IntelGFX
的文件,但我使用os.path.abspath('IntelGFX')
创建的路径为C:\Python34\IntelGFX
。
那么如何获取文件的原始路径?
答案 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)