我应该得到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
答案 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