Python os库核心功能详解:文件目录、路径处理与系统命令执行
本文详细解析Python标准库os的核心功能,涵盖文件与目录的增删改查、路径的拼接与解析、环境变量的读取与设置,以及系统命令的执行方法。通过具体代码示例,展示如何高效处理文件路径、遍历目录结构及调用外部程序,帮助开发者掌握Python系统交互的关键技能。
Python os库概述
Python内置的os模块提供了与操作系统进行交互的功能,主要应用于文件与目录管理、路径处理、环境变量操作以及系统命令的执行等方面。
文件与目录操作
文件与目录的基本操作
- 获取当前工作目录:使用os.getcwd()函数。
- 切换当前工作目录:使用os.chdir('/usr/local/')函数。
- 列出指定目录下的所有文件和子目录:使用os.listdir('/usr/local/')函数。
- 创建目录:使用os.makedirs('/usr/local/tmp')函数,该函数支持创建多级目录。
- 删除目录:使用os.removedirs('/usr/local/tmp')函数,注意此方法仅能删除空目录。若需递归删除非空目录,可导入shutil模块并调用shutil.rmtree('/usr/local/tmp')。
- 删除文件:使用os.remove('/usr/local/a.txt')函数。
- 递归遍历目录及其子目录:使用os.walk()函数,该函数返回一个生成器,包含根目录、子目录列表和文件名列表。
示例:遍历/usr/local目录及其所有子目录,收集每个文件的完整路径名。
import os
for root, dirs, files in os.walk("/usr/local", topdown=False):
for name in files:
print('文件:', os.path.join(root, name))
for name in dirs:
print('目录:', os.path.join(root, name))
路径处理技巧
路径处理操作
- 获取当前Python脚本的文件名:通过__file__变量。
- 获取文件所在的目录路径(不含文件名):使用os.path.basename(__file__)。
- 获取文件的绝对路径(包含文件名):使用os.path.abspath(__file__)。
- 获取文件所在的目录路径:使用os.path.dirname(__file__)。
- 分割路径和文件名:使用os.path.split('/usr/local/a.txt'),返回一个包含[路径, 文件名]的元组。
- 分割文件名和扩展名:使用os.path.splitext('a.txt'),返回一个包含['a', '.txt']的元组。
- 判断路径是否存在:使用os.path.exists('/usr/local/a.txt'),若存在返回True,否则返回False。
- 判断路径是否为文件:使用os.path.isfile('/usr/local/a.txt'),若为文件返回True,否则返回False。
- 判断路径是否为目录:使用os.path.isdir('/usr/local/a.txt'),若为目录返回True,否则返回False。
- 组装路径:使用os.path.join('/usr', 'local', 'a.txt'),根据操作系统自动处理路径分隔符。
示例:获取项目根路径及报告文件路径
假设项目结构如下所示:
project/\n\ndata/\n\nreports/\n\nreport.html\n\ntestcases/\n\nconfig.py\n\nrun.py
在run.py中获取项目根路径和report.html文件的路径。
# filename: run.py
import os
base_dir = os.path.dirname(__file__) # __file__是run.py文件,os.path.dirname获取到其所在的目录project即项目根路径
report_file = os.path.join(base_dir, 'reports', 'report.html') # 使用系统路径分隔符('\')连接项目根目录base_dir和'reports'及'report.html'得到报告路径
print(report_file)
环境变量管理
环境变量操作
- 获取环境变量:可通过os.environ.get('PATH')或os.getenv('PATH')函数获取。
- 设置环境变量:直接赋值给os.environ字典,例如os.environ['MYSQL_PWD']='123456'。
系统命令执行
系统命令执行
执行系统命令:使用os.system("jmeter -n -t /usr/local/demo.jmx")函数。需要注意的是,该函数无法直接获取命令的标准输出信息。若需捕获运行时的屏幕输出,建议使用subprocess模块。
以上为本文的全部内容,希望能为您的学习提供帮助,也欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









