Python 的 os 库常见使用方法(操作目录及文件)

前言:

os 模块是 Python 标准库中用于与操作系统交互的核心模块,提供了许多操作文件和目录的功能。以下是常见的使用方法:

1. 目录操作

方法功能说明示例
os.getcwd()获取当前工作目录print(os.getcwd())
os.chdir(path)切换当前工作目录os.chdir("/tmp")
os.listdir(path)列出目录下的文件和子目录files = os.listdir(".")
os.mkdir(path)创建单层目录os.mkdir("new_dir")
os.makedirs(path)递归创建多层目录os.makedirs("a/b/c")
os.rmdir(path)删除空目录os.rmdir("empty_dir")
os.removedirs(path)递归删除空目录os.removedirs("a/b/c")
os.path.isdir(path)判断是否为目录if os.path.isdir("dir"):

2. 文件操作

方法功能说明示例
os.remove(path)删除文件os.remove("file.txt")
os.rename(src, dst)重命名文件或目录os.rename("old.txt", "new.txt")
os.path.exists(path)判断路径是否存在if os.path.exists("file"):
os.path.isfile(path)判断是否为文件if os.path.isfile("file"):
os.path.getsize(path)获取文件大小(字节)size = os.path.getsize("file.txt")

3. 路径操作(os.path 子模块)

方法功能说明示例
os.path.join(a, b)拼接路径(跨平台兼容)path = os.path.join("dir", "file.txt")
os.path.abspath(path)获取绝对路径abs_path = os.path.abspath(".")
os.path.dirname(path)获取目录部分dir = os.path.dirname("/tmp/file.txt")
os.path.basename(path)获取文件名部分file = os.path.basename("/tmp/file.txt")
os.path.split(path)拆分目录和文件名dir, file = os.path.split("/tmp/file.txt")

案例1:通过os库方法获取平台信息

import os
# 1.os.set属性:获取本机操作系统的分隔符
print(os.sep) # \
# 2.os.name属性:获取本机操作系统的类型
print(os.name) # nt代表windows系统,posix代表Linux
# 3.os.getcwd()方法:获取当前工作目录
print(os.getcwd()) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件

案例2:通过os库方法对目录或文件进行增删改查

# 4.1 os.listdir() 方法:获取项目路径下所有文件和目录列表,并以列表的形式展示
print(os.listdir()) # ['1.os使用.py']
print(os.listdir("E:\\【书】【有用重要】2024软件测试接口自动化和UI自动化完整代码\\1.接口自动化 视频+ppt+源代码\\本书的学习流程.txt")) # 获取指定盘符下的所有文件和目录列表,并以列表形式展示
# 4.2 os.mkdir()方法创建目录文件
os.mkdir("testcase") # 当前路径下创建一个名为“testcase”的目录
os.mkdir("E:\\testcast")
# 4.3 os.rmdir()方法:删除一个空目录
os.rmdir("testcase") # 删除当前项目路径下空目录文件testcase
os.rmdir("E:\\testcast") # 删除指定路径下,空目录文件testcase
# 4.4 os.remove()方法:删除指定文件
os.remove("123.txt") # 删除当前项目路径下的"123.txt"文件
os.remove("E:\\data\\2.doc")
# 4.5 os.rename()方法:重命名目录或文件 os.rename("原目录名","新目录名")
os.rename("score002.txt","score001.txt")

案例3:通过os.path子模块来操作目录及文件


# 1.__file__特殊成员:返回当前文件的全路径
print(__file__) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件\1.os使用.py
# 2.os.path.dirname(__file__)方法:返回文件所在目录
print(os.path.dirname(__file__)) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件
print(os.path.dirname(os.path.dirname(__file__))) # 文件所在目录的上一级目录 D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject
# 3. os.path.abspath(__file__)方法:返回文件绝对路径
print(os.path.abspath(__file__)) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件\1.os使用.py
# 4.os.path.dirname(os.path.abspath(__file__)) 组合 :返回当前文件所在目录
print(os.path.dirname(os.path.abspath(__file__))) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件
# 5.os.path.json() 路径拼接  os.path.join(目录 + 文件名)
print(os.path.join(os.path.dirname(os.path.abspath(__file__)),"Test.py")) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os库操作目录及文件\Test.py
# 6.os.path.exists() 判断路径是否存在
os.path.isfile()# 是否为文件
os.path.isdir() # 是否为目录

conf_file = os.path.abspath(__file__) # 文件路径完整
conf_path = os.path.dirname(conf_file) # 文件目录
conf_file1 = os.path.join(conf_path,"score001.txt") # 目录+文件名,拼的文件完整路径
conf_path1 = os.path.dirname(os.path.dirname(conf_path)) # 上级目录
conf_file2 = conf_path1 + os.sep + "接口自动化" +os.sep+"score001.txt" # 系统分割符os.sep,拼完整路径

os.path.exists(conf_file) # 存在
os.path.exists(conf_path) # 存在
os.path.isfile(conf_file1) # 是否为文件False, 拼的文件完整路径
os.path.isdir(conf_path1) # 是目录True

End

<think>嗯,用户想要了解Pythonos模块在文件目录操作中的使用方法和示例教程。首先,我需要确认用户的需求层次。他们可能刚开始学习Python,或者需要处理文件系统任务,但不太熟悉os模块的具体函数。 我应该先介绍os模块的基本作用,比如它提供操作系统功能的接口,处理文件目录。然后,分几个部分组织内容:路径操作文件操作目录操作、高级功能,每个部分给出常用函数和示例代码。 需要确保每个示例都符合Python语法,并且使用中文注释,方便用户理解。同时,注意用户提到的格式要求,行内数学表达式用$...$,但这里可能用不上数学公式,不过要检查是否有需要的地方,比如路径中的变量名可能需要用代码格式。 还要考虑用户可能遇到的常见问题,比如路径分隔符在不同操作系统中的差异,或者删除文件时的注意事项。在高级功能部分,可以包含遍历目录树和运行系统命令的例子,这样用户了解更全面的应用场景。 最后,提醒用户注意跨平台兼容性和操作风险,比如删除文件前先检查是否存在。确保回答结构清晰,分步骤讲解,每个示例都简单明了,帮助用户逐步掌握os模块的使用。</think>以下为Python os模块文件目录操作使用方法及示例教程,按功能分类说明: --- ### 一、路径操作 1. **获取当前路径** ```python import os current_path = os.getcwd() # 返回当前工作目录路径字符串 print(f"当前路径:{current_path}") ``` 2. **路径拼接** ```python new_path = os.path.join("dir1", "subdir", "file.txt") # 自动处理系统路径分隔符(Windows用\,Linux/macOS用/) ``` 3. **路径拆解** ```python path = "/home/user/docs/report.pdf" dirname = os.path.dirname(path) # 获取目录部分 → "/home/user/docs" basename = os.path.basename(path) # 获取文件名 → "report.pdf" ``` --- ### 二、文件操作 1. **文件重命名** ```python os.rename("old.txt", "new.txt") # 需确保文件存在 ``` 2. **删除文件** ```python if os.path.exists("temp.log"): os.remove("temp.log") # 删除前建议先检查存在性 ``` 3. **获取文件属性** ```python file_stats = os.stat("data.csv") print(f"文件大小:{file_stats.st_size} 字节") print(f"最后修改时间:{file_stats.st_mtime}") ``` --- ### 三、目录操作 1. **创建目录** ```python os.mkdir("new_folder") # 创建单层目录 os.makedirs("parent/child/grandchild", exist_ok=True) # 递归创建多层目录 ``` 2. **删除目录** ```python os.rmdir("empty_dir") # 只能删除空目录 os.removedirs("a/b/c") # 递归删除空目录链 ``` 3. **列出目录内容** ```python entries = os.listdir("project") # 返回目录下所有条目名称列表 print("目录内容:", entries) # 带路径遍历(Python 3.5+) for entry in os.scandir("project"): print(f"{entry.name} → {'文件夹' if entry.is_dir() else '文件'}") ``` --- ### 四、高级功能 1. **遍历目录树** ```python for root, dirs, files in os.walk("my_project"): print(f"当前目录:{root}") print(f"包含子目录:{dirs}") print(f"包含文件:{files}\n") ``` 2. **环境变量操作** ```python home_dir = os.environ.get("HOME") # 获取系统环境变量 os.environ["CUSTOM_PATH"] = "/my/custom/path" # 设置临时环境变量 ``` 3. **执行系统命令** ```python os.system("ls -l") # 执行shell命令(注意安全风险) ``` --- ### 注意事项 1. **跨平台兼容性**: - 使用`os.path`处理路径(如`os.path.join()`),不要硬编码分隔符 - `os.name`可检测操作系统类型(返回'posix'、'nt'等) 2. **危险操作防护**: - 删除前使用`os.path.exists()`检查存在性 - 删除目录前确认是否为空 3. **路径相关函数对比**: - `os.path.abspath()`:获取绝对路径 - `os.path.isabs()`:检查是否为绝对路径 - `os.path.relpath()`:获取相对路径 --- ### 完整示例:整理目录 ```python import os def organize_dir(target_dir): # 创建分类目录 os.makedirs(os.path.join(target_dir, "Images"), exist_ok=True) os.makedirs(os.path.join(target_dir, "Documents"), exist_ok=True) # 遍历目录 for filename in os.listdir(target_dir): filepath = os.path.join(target_dir, filename) if os.path.isfile(filepath): # 按扩展名分类 ext = os.path.splitext(filename)[1].lower() if ext in [".jpg", ".png"]: dest = os.path.join(target_dir, "Images", filename) elif ext in [".doc", ".pdf"]: dest = os.path.join(target_dir, "Documents", filename) else: continue os.rename(filepath, dest) print(f"Moved {filename} → {dest}") organize_dir("/Users/me/Downloads") ``` 通过以上示例可快速掌握os模块的核心文件操作功能,实际使用时建议结合`shutil`模块处理更复杂的文件操作需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值