os.path模块超全详解

发布时间:2026/7/22 9:53:22
os.path模块超全详解 在 Python 进行文件、目录操作时路径处理是高频需求。Windows、Linux、MacOS 系统路径分隔符不统一Windows \类 Unix /手动拼接、切割路径极易出现兼容问题。os.path 是 Python 内置路径处理模块屏蔽系统差异提供路径拼接、判断、拆分、文件元信息获取等全套工具是文件脚本、爬虫、数据处理项目必备基础工具。本文整理 15 个高频方法。先import os方法功能说明os.path.join(path, *paths)智能拼接多段路径自动适配系统分隔符os.path.exists(path)判断路径文件 / 文件夹是否真实存在os.path.isfile(path)判断路径是否为文件os.path.isdir(path)判断路径是否为文件夹 / 目录os.path.basename(path)获取路径末尾的文件 / 文件夹名称os.path.dirname(path)获取路径中目录部分去掉末尾文件os.path.split(path)拆分路径为「目录路径 文件名」返回元组os.path.splitext(path)拆分路径为「无后缀路径 文件扩展名」返回元组os.path.abspath(path)将相对路径转为绝对完整路径os.path.relpath(path, start)获取目标路径相对于指定起始目录的相对路径os.path.normpath(path)规范化路径清除冗余../、//等无效分隔符os.path.getsize(path)获取文件大小单位字节 (Byte)os.path.getmtime(path)获取文件最后修改时间时间戳os.path.getatime(path)获取文件最后访问时间时间戳os.path.getctime(path)Windows文件创建时间Linux文件属性变更时间#os.path常用方法介绍 os.path方法是Python中用于处理文件路径的模块提供了许多函数来操作和处理文件路径。以下是一些常用的os.path方法 1. os.path.join(path, *paths): 将多个路径组合成一个路径。 2. os.path.exists(path): 检查路径是否存在。 3. os.path.isfile(path): 检查路径是否是一个文件。 4. os.path.isdir(path): 检查路径是否是一个目录。 5. os.path.basename(path): 返回路径的最后一个组件。 6. os.path.dirname(path): 返回路径的目录部分。 7. os.path.split(path): 将路径分割成目录和文件名两部分。 8. os.path.splitext(path): 将路径分割成文件名和扩展名两部分。 9. os.path.abspath(path): 返回路径的绝对路径。 10. os.path.relpath(path, startos.curdir): 返回相对于start路径的路径。 11. os.path.normpath(path): 规范化路径消除冗余的分隔符和上级目录引用。 12. os.path.getsize(path): 返回文件的大小以字节为单位。 13. os.path.getmtime(path): 返回文件的最后修改时间。 14. os.path.getatime(path): 返回文件的最后访问时间。 15. os.path.getctime(path): 返回文件的创建时间。 #os.path.join import os a_path /home/GFD b_path test_demo.py c_path os.path.join(a_path,b_path) print(fc_path:{c_path})#输出: c_path:/home/GFD/test_demo.py d_path os.path.join(a_path,b_path,test1,test2) print(fd_path:{d_path})#输出d_path:/home/GFD/test_demo.py/test1/test2 #2.os.path.exists(path) print(fos.path.exists(c_path):{os.path.exists(c_path)})#输出: os.path.exists(c_path):False print(fos.path.exists(d:):{os.path.exists(d:)}) #输出True #3.os.path.isfile(path) print(fos.path.isfile(d:):{os.path.isfile(d:)}) #输出False print(fos.path.isfile(c_path):{os.path.isfile(c_path)})#如果是不存在的路径或文件返回False print(fos.path.isfile(path):{os.path.isfile(D:\\du\\code\\csdn\\os\\os.py)}) 报错信息SyntaxError: f-string expression part cannot include a backslash 翻译f-string 大括号 {} 内部不能直接包含反斜杠 \ 用正斜杠 / 替代 Windows 反斜杠Python 全平台兼容 filel_path D:\\du\\code\\csdn\\os\\os.py print(fos.path.isfile(filel_path):{os.path.isfile(filel_path)})# print(fos.path.isfile(path):{os.path.isfile(D:/du/code/csdn/os/os.py)}) # 4. os.path.isdir(path): 检查路径是否是一个目录。 print(fos.path.isdir(path):{os.path.isdir(D:)}) #5.os.path.basename(path):返回路径中的最后一个组件 print(fos.path.basename(path):{os.path.basename(D:/du/code/csdn/os/os.py)})#输出: os.py #如果最后一个组件是一个目录则返回该目录名 print(fos.path.basename(path):{os.path.basename(D:/du/code/csdn/os)})#输出: os #6. os.path.dirname(path):返回路径中的目录部分 print(fos.path.dirname(path):{os.path.dirname(D:/du/code/csdn/os/os.py)})#输出: D:/du/code/csdn/os print(fos.path.dirname(path):{os.path.dirname(D:/du/code)})#如果路径是最后一个组件是目录则返回该目录的上级目录 D:/du #7.os.path.split(path):将路径分割为目录和文件名两部分 print(fos.path.split(path):{os.path.split(D:/du/code/csdn/os/os.py)})#输出: (D:/du/code/csdn/os, os.py) 是一个元组包含目录和文件名两部分 a os.path.split(D:/du/code/csdn/os/os.py)[0] b os.path.split(D:/du/code/csdn/os/os.py)[1] print(fa:{a},b:{b})#输出: a:D:/du/code/csdn/os,b:os.py #8.os.path.splitext(path):将路径分割为文件名和扩展名两部分 path_8 D:/du/code/csdn/os/os.py print(fos.path.splitext(path_8):{os.path.splitext(path_8)})#输出: (D:/du/code/csdn/os/os, .py) 是一个元组包含文件名和扩展名两部分 filename os.path.splitext(path_8)[0]#输出: D:/du/code/csdn/os/os filr_ext os.path.splitext(path_8)[1]#输出: .py print(ffilename:{filename},filr_ext:{filr_ext})#输出: filename:D:/du/code/csdn/os/os,filr_ext:.py #9.os.path.abspath(path):返回路径的绝对路径 print(fos.path.abspath(path):{os.path.abspath(./os.py)})#输出: D:/du/code/csdn/os/os.py #10.os.path.relpath(path,startos.curdir):返回相对于start路径的路径 print(fos.path.relpath(path,startos.curdir):{os.path.relpath(D:/du/code/csdn/os/os.py,D:/du/code)})#输出: csdn/os/os.py #11.os.path.normpath(path):规范化路径消除冗余的分隔符和上级目录引用 print(fos.path.normpath(path):{os.path.normpath(D:/du/code/csdn/os/../os/os.py)})#输出: D:/du/code/csdn/os/os.py #12.os.path.getsize(path):返回文件的大小以字节为单位 path_12 D:/du/code/csdn/os/os.py print(fos.path.getsize(path_12):{os.path.getsize(path_12)})#输出: 具体的文件自己数 如4881文件大小单位为字节 #可以转化为KBMBGB等 size_kb os.path.getsize(path_12) / 1024 #1字节8位1KB1024字节 print(fsize_kb:{size_kb}) #13.os.path.getmtime(path):返回文件的最后修改时间 import time path_13 D:/du/code/csdn/os/os.py print(fos.path.getmtime(path_13):{os.path.getmtime(path_13)})#输出: 具体的时间戳 #如os.path.getmtime(path_13):1784617829.5431192 print(fos.path.getmtime(path_13):{time.ctime(os.path.getmtime(path_13))})#输出: 具体的可读时间 #如os.path.getatime(path_14):Tue Jul 21 15:11:50 2026 #time.ctime()函数将时间戳转换为可读的时间格式 #14.os.path.getatime(path):返回文件的最后访问时间 path_14 D:/du/code/csdn/os/os.py print(fos.path.getatime(path_14):{os.path.getatime(path_14)})#输出: 具体的时间戳 #如os.path.getatime(path_14):1784617829.5431192 print(fos.path.getatime(path_14):{time.ctime(os.path.getatime(path_14))})#输出: 具体的可读时间 #如os.path.getatime(path_14):Tue Jul 21 15:11:55 2026 #15.os.path.getctime(path):返回文件的创建时间 path_15 D:/du/code/csdn/os/os.py print(fos.path.getctime(path_15):{os.path.getctime(path_15)})#输出: 具体的时间戳 #如os.path.getctime(path_15):1784617829.5431192 print(fos.path.getctime(path_15):{time.ctime(os.path.getctime(path_15))})#输出: 具体的可读时间 #如os.path.getctime(path_15):Tue Jun 16 16:57:35 2026 #总结os.path模块提供了丰富的函数来处理文件路径方便我们在Python中进行文件和目录的操作。通过这些方法我们可以轻松地组合路径、检查路径是否存在、获取文件信息等从而提高代码的可读性和可维护性。关键踩坑避坑坑 1f-string 大括号内不能直接写\反斜杠报错SyntaxError: f-string expression part cannot include a backslash错误写法python运行print(f{os.path.isfile(D:\\code\\test.py)})两种稳定解决方案路径提前赋值给变量变量在外层定义Windows 路径统一使用正斜杠/Python 完全兼容无转义问题。坑 2isfile()/isdir()路径不存在时统一返回 False判断文件/文件夹类型前建议先用os.path.exists()提前校验路径是否存在避免逻辑混淆。坑 3os.path.getctime()系统行为不一致Windows返回文件创建时间Linux / MacOS返回文件权限、名称等属性最后变更时间不能用来获取创建时间。坑 4手动拼接路径不要硬写\Windows 硬编码\会导致 Linux/Mac运行报错优先使用os.path.join()自动拼接实现跨平台代码。