目前用到的一些os.path方法

2022-03-15 19:17:53 浏览数 (1)

主要记录下os.path.join()的用法

目录结构如下

在readconfig.py中进行试验,如下

1. 使用os.path.realpath(__file__)获取文件所在目

代码语言:javascript复制
import os

print(os.path.realpath(__file__))

运行结果:

代码语言:javascript复制
E:Crawlercommonreadconfig.py  运行结果显示 “路径 文件名”

2. os.path.split(path),将path分割成目录和文件名二元组返

代码语言:javascript复制
在上一步的基础上运用split方法

1. print(os.path.split(os.path.realpath(__file__)))  
或者直接使用绝对路径看的更清楚些
2. print(os.path.split('E:Crawlercommon\readconfig.py'))
那么如果只取目录的话,如下
3. print(os.path.split(os.path.realpath(__file__))[0])

运行结果:

代码语言:javascript复制
1、2的结果 ('E:\Crawler\common', 'readconfig.py')
3的结果    E:Crawlercommon

3. os.path.abspath('.'), 获取当前文件所在路

代码语言:javascript复制
print(os.path.abspath('.'))
运行结果:
E:Crawlercommon

4. os.path.dirname(path),返回path的目录

代码语言:javascript复制
1. print(os.path.dirname('E:Crawlercommon\readconfig.py')) 
结果:E:Crawlercommon

2. print(os.path.dirname('E:Crawlercommon'))
结果:E:Crawler

所以 os.path.dirname(os.path.abspath('.')) 表示获取当前文件所在目录的上一级目录,即项目所在目录E:Crawler
结果:E:Crawler

5. os.path.join(), 用于路径拼接

将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

所谓第一个绝对路径,是从“尾部向头部读,

所得到的第一个绝对路径”,以 “” 为标识

代码语言:javascript复制
print(os.path.join('E:Crawler', "config.ini"))

结果:E:Crawlerconfig.ini

print(os.path.join('E:Crawler', 'D:\aa', "config.ini"))

结果:D:aaconfig.ini

print(os.path.join('/home/mnt','/home/mnt/attach','/home/a/b/c')) 
结果:/home/a/b/c

print(os.path.join('/local', '\aa', "/config.ini"))

结果:/config.ini

实例在Python中如何使用相对目录

例子1:

假如工程文件的目录结构如下

main中存放的是整个程序的运行文件

test_case存放的是所有的测试用例

那么在run_report.py中需要指明测试用例所在的位置,需要用到os模块

代码语言:javascript复制
os.path.abspath 表示 获得文件当前路径
os.path.dirname 表示 获得文件的父目录

可以按照如下方式

代码语言:javascript复制
import os

root_dir = os.path.dirname(os.path.abspath('.'))  # 获取当前文件(这里是指run_report.py)所在目录的父目录的绝对路径,也就是项目所在路径E:DDT_Interface
case_dir = root_dir   '/test_case/'  # 根据项目所在路径,找到用例所在的相对项目的路径
print(root_dir)
print(case_dir)

执行结果如下

代码语言:javascript复制
D:worksoftpython36python.exe E:/DDT_Interface/main/run_report.py
E:DDT_Interface
E:DDT_Interface/test_case/

Process finished with exit code 0

例子2:

如果运行主文件直接在工程文件下,

没有一个单独的目录了(因为只有一个文件,没必要再单独创建一个目录)

run_all_case.py中关于读取用例的写法如下,

只需用os.path.abspath('.')来获取当前文件所在的路径即可,

再根据当前文件路径定位用例的路径

代码语言:javascript复制
import os

root_dir = os.path.abspath('.')  # 获取当前文件所在目录,也就是"审批系统"所在目录,即"E:shenpi审批系统"
case_path = root_dir   "/test_case"  # 获取case所在目录,即"E:shenpi审批系统test_case"
print(case_path)

执行结果如下

代码语言:javascript复制
D:worksoftpython36python.exe E:/shenpi/审批系统/run_all_case.py
E:shenpi审批系统/test_case

Process finished with exit code 0

0 人点赞