1、
import os
conf_path = os.path.dirname(os.path.abspath(__file__))
work_path = os.path.dirname(os.path.dirname(conf_path))
data_path = os.path.join(work_path, "data")
print(conf_path)
print(work_path)
print(data_path)
print(os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))))
D:\Python38\python.exe C:/Users/admin、/Downloads/AirtestIDE-win-1.2.5/AirtestIDE/case.air/Demo.air/Demo.py
C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE\case.air\Demo.air
C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE
C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE\data
C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE
os.path.abspath(file)返回代码文件的所在的目录,不带文件名;
os.path.dirname(path)返回path目录或者绝对路径的上一级目录,结合以上几张图,很容易看出:代码第二行对conf_path执行了两次os.path.dirname,得到的就是上两级的目录;第三行,与data拼接,最终形成数据所在目录。
2、返回某文件夹下的所有文件绝对路径
import os
outpath = "D:\D76A_ATA\Screenshots"
path = "D:\D76A_ATA\Screenshots"
for image_path in os.listdir(path):
#print(image_path) #相对路径
full_path = os.path.join(path, image_path)
print(full_path)
输出:
D:\D76A_ATA\Screenshots\Screenshot_20210305-214355.png
D:\D76A_ATA\Screenshots\Screenshot_20210306-104045.png
3、
您可以避免使用显式的“…”和“.” 通过使用os.pardir和在路径名中输入os.curdir 增加代码的可移植性
os.pardir Windows 返回… os.curdir 输出"."
.py路径 D:\Python38\python.exe C:/Users/admin、/Downloads/AirtestIDE-win-1.2.5/AirtestIDE/case.air/Demo.air/Demo.py
filename="123"
file_path1 = os.path.join(os.path.dirname(__file__))+ "/../" +"data/"+filename
file_path2=os.path.abspath(os.path.join(os.path.dirname(__file__),'data',filename))
file_path3 = os.path.abspath(os.path.join(os.path.dirname(__file__),os.pardir,'data',filename))
print(file_path1)
print(file_path2)
print(file_path3)
# C:/Users/admin、/Downloads/AirtestIDE-win-1.2.5/AirtestIDE/case.air/Demo.air/../data/123
# C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE\case.air\Demo.air\data\123
# C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE\case.air\data\123
print(os.curdir)
print(os.path.abspath(os.curdir))
输出
# .
# C:\Users\admin、\Downloads\AirtestIDE-win-1.2.5\AirtestIDE\case.air\Demo.air