【Python】数据处理:OS目录文件操作

Python的os模块是一个用于与操作系统进行交互的标准库模块。它提供了丰富的功能来处理文件和目录、执行系统命令、获取和设置环境变量等。

工作目录操作

获取当前工作目录

python 复制代码
os.getcwd()
  • 参数:无
  • 返回值:一个字符串 ,表示当前工作目录的路径。这个路径是Python解释器开始执行脚本时所在的目录,或者是最后通过 os.chdir(path) 函数改变的目录。

改变当前工作目录

python 复制代码
os.chdir(path)
  • 参数:path(必需):一个字符串,指定要更改到的目标目录的路径。

  • 返回值:无

目录操作

创建一个目录

python 复制代码
os.mkdir(path,mode,dir_fd)
  • 参数
    • path (str): 要创建的目录路径。
    • mode (int, optional): 指定目录的权限,默认值是 0o777。在某些系统上可能会被 umask 覆盖。
    • dir_fd (optional): 如果提供,此路径相对于 dir_fd 指定的目录
  • 返回值:无

递归创建目录。如果中间的目录不存在,也会一并创建。

python 复制代码
os.makedirs(name,mode,exist_ok)
  • 参数
    • name (str): 要创建的目录路径。
    • mode (int, optional): 指定目录的权限,默认值是 0o777。在某些系统上可能会被 umask 覆盖。
    • exist_ok (bool, optional): 如果为 True,当目标目录已经存在时不会引发异常。如果为 False,当目标目录已经存在时会引发 FileExistsError
  • 返回值:无

删除一个目录。该目录必须是空的,否则会引发 OSError 异常。

python 复制代码
os.rmdir(path,dir_fd)
  • 参数
    • path (str): 要删除的目录路径。
    • dir_fd (optional): 如果提供,此路径相对于 dir_fd 指定的目录。
  • 返回值:无

递归删除目录。从指定路径开始,依次删除各级目录。如果目录为空,则删除之,直至某个目录非空或所有目录都被删除。

python 复制代码
os.removedirs(name)
  • 参数:name (str): 要删除的目录路径。
  • 返回值:无

文件操作

虽然os模块没有直接创建文件的方法,但可以通过open函数创建文件。

python 复制代码
open('file.txt', 'w').close()  # 创建一个空文件

删除指定路径的文件。如果路径指向的是一个目录,将引发 IsADirectoryError 异常。

python 复制代码
os.remove(path,dir_fd)
  • 参数:
    • path (str): 要删除的文件路径。
    • dir_fd (optional): 如果提供,此路径相对于 dir_fd 指定的目录。
  • 返回值:无

重命名文件或目录

python 复制代码
os.rename(src,dst,src_dir_fd,dst_dir_fd)
  • 参数:
    • src (str): 原文件或目录路径。
    • dst (str): 新文件或目录路径。
    • src_dir_fd (optional): 如果提供,src 是相对于 src_dir_fd 指定的目录。
    • dst_dir_fd (optional): 如果提供,dst 是相对于 dst_dir_fd 指定的目录。
  • 返回值:无

文件属性

检查指定的路径是否是一个文件

复制代码
os.path.isfile(path)
  • 参数:path (str) - 要检查的路径。
  • 返回值:如果路径是一个存在的文件,返回 True;否则返回 False

检查指定的路径是否是一个目录

复制代码
os.path.isdir(path)
  • 参数:path (str) - 要检查的路径。
  • 返回值:如果路径是一个存在的目录,返回 True;否则返回 False

返回指定路径的文件大小(以字节为单位)

复制代码
os.path.getsize(path)
  • 参数:path (str) - 要获取大小的文件路径。

  • 返回值:返回文件的大小(以字节为单位)。

获取文件最后修改时间

复制代码
os.path.getmtime(path)
  • 参数:path (str) - 要获取修改时间的文件路径。

  • 返回值:返回文件最后修改时间的时间戳(自纪元以来的秒数表示,通常是 Unix 时间戳)。

从路径中获取文件名(不包含目录部分)

复制代码
os.path.basename(path)
  • 参数:path (str) - 要提取文件名的路径。

  • 返回值:返回路径中的文件名部分。

从路径中获取目录名(不包含文件名部分)

复制代码
os.path.dirname(path)
  • 参数:path (str) - 要提取目录名的路径。

  • 返回值:返回路径中的目录名部分。

路径操作

检查文件或目录是否存在

复制代码
os.path.exists(path)
  • 参数:path (str) - 要检查的文件或目录路径。

  • 返回值:如果路径存在,返回 True;否则返回 False

将一系列的路径片段解析为绝对路径

python 复制代码
path.resolve([...paths])
  • 参数:...paths (string[]):一个或多个路径片段的序列
  • 返回值:一个字符串,该字符串是绝对路径。

方法返回从两路径的相对路径

python 复制代码
path.relative(from, to)
  • 参数
    • from (str):起始路径。
    • to (str):目标路径。
  • 返回值:一个字符串,该字符串表示从fromto的相对路径。

连接一个或多个路径组件,返回一个合并后的路径。

复制代码
os.path.join(path,*paths)
  • 参数
    • path (str) - 基础路径。
    • *paths (str) - 需要连接到基础路径的其他路径组件。
  • 返回值:返回合并后的路径

将路径分割为目录和文件名两部分

复制代码
os.path.split(path)
  • 参数:path (str) - 要分割的路径。

  • 返回值:返回一个元组,包含目录和文件名两部分。

将路径分割为文件名和扩展名两部分

复制代码
os.path.splitext(path)
  • 参数:path (str) - 要分割的路径。

  • 返回值:返回一个元组,包含文件名和扩展名两部分。

目录遍历

os.listdir 返回指定目录中的所有文件和目录的名称列表。它不会递归遍历子目录。

python 复制代码
os.listdir(path,dir_fd)
  • 参数
    • path (str, optional): 要列出内容的目录路径。如果未指定,默认使用当前工作目录。
    • dir_fd (optional): 如果提供,此路径相对于 dir_fd 指定的目录
  • 返回值:一个包含目录中所有文件和目录名的列表。

os.walk 生成目录树下的所有文件名,递归遍历目录中的所有子目录。它提供了遍历目录树的简单方法

python 复制代码
os.walk(top,topdown)
  • 参数
    • top (str): 要遍历的目录树的顶级目录路径
    • topdown (bool, optional): 如果为 True(默认值),则首先遍历顶级目录,否则首先遍历子目录。
  • 返回值:一个生成器,生成一个三元组 (root, dirs, files)
    • root (str): 当前正在遍历的目录的路径。
    • dirs (list): root 目录中子目录的名称列表。
    • files (list): root 目录中非目录的名称列表

示例


相关推荐
一晌小贪欢16 分钟前
【Python办公】处理 CSV和Excel 文件操作指南
开发语言·python·excel·excel操作·python办公·csv操作
檀越剑指大厂1 小时前
【Python系列】fastapi和flask中的阻塞问题
python·flask·fastapi
YoungHong19922 小时前
【Python进阶】告别繁琐Debug!Loguru一键输出异常日志与变量值
python·debug·异常处理·日志·loguru·log·logger
AiXed3 小时前
PC微信协议之nid算法
python·网络协议·算法·微信
小李哥哥3 小时前
基于数据的人工智能建模流程及源码示例
python
APIshop4 小时前
实战解析:苏宁易购 item_search 按关键字搜索商品API接口
开发语言·chrome·python
蓝桉~MLGT4 小时前
Python学习历程——Python面向对象编程详解
开发语言·python·学习
larance4 小时前
Python 中的 *args 和 **kwargs
开发语言·python
百锦再4 小时前
选择Rust的理由:从内存管理到抛弃抽象
android·java·开发语言·后端·python·rust·go
yaoxin5211234 小时前
238. Java 集合 - 使用 ListIterator 遍历 List 元素
java·python·list