Python的os 模块中常见的文件和目录操作方法整理!
Python 的 os 模块提供了大量与操作系统交互的功能,尤其是文件和目录操作。
这里我会详细列出 os 模块中常见的文件操作用法,涵盖文件创建、删除、重命名、移动、路径处理等,并附上简短示例和说明。
以下内容尽量全面,同时保持清晰实用。
1. 文件操作
- os.rename(src, dst):重命名文件或目录。
- os.remove(path):删除文件。
- os.unlink(path):删除文件(等同于 os.remove())。
- os.open(path, flags, mode=0o777):以底层方式打开文件,返回文件描述符。
- os.close(fd):关闭文件描述符。
- os.read(fd, n):从文件描述符读取指定字节。
- os.write(fd, bytes):向文件描述符写入字节。
- os.symlink(src, dst):创建符号链接(Unix 系统)。
- os.readlink(path):读取符号链接指向的路径(Unix 系统)。
2. 目录操作
- os.mkdir(path, mode=0o777):创建单个目录。
- os.makedirs(path, mode=0o777, exist_ok=False):递归创建多级目录。
- os.rmdir(path):删除单个空目录。
- os.removedirs(path):递归删除空目录。
- os.listdir(path):列出目录中的文件和子目录。
- os.walk(top, topdown=True):递归遍历目录树。
- os.chdir(path):更改当前工作目录。
- os.getcwd():获取当前工作目录。
3. 路径和文件信息操作
- os.path.join(*paths):拼接路径,自动处理分隔符。
- os.path.split(path):将路径拆分为目录和文件名。
- os.path.splitext(path):将路径拆分为文件名和扩展名。
- os.path.exists(path):检查路径是否存在。
- os.path.isfile(path):检查路径是否为文件。
- os.path.isdir(path):检查路径是否为目录。
- os.path.abspath(path):返回路径的绝对路径。
- os.path.basename(path):返回路径的最后部分(文件名或目录名)。
- os.path.dirname(path):返回路径的目录部分。
- os.stat(path):获取文件或目录的元信息(如大小、修改时间)。
- os.path.getsize(path):获取文件大小(字节)。
- os.path.getmtime(path):获取文件最后修改时间(时间戳)。
- os.path.getatime(path):获取文件最后访问时间(时间戳)。
- os.path.getctime(path):获取文件创建时间(Windows)或元数据修改时间(Unix)。
- os.chmod(path, mode):更改文件或目录权限(Unix 系统)。
- os.access(path, mode):检查文件或目录的权限。
1. 文件操作
1.1 os.rename(src, dst)
import os # 重命名文件 os.rename("old.txt", "new.txt") print("文件已重命名为 new.txt")
1.2 os.remove(path)
import os # 删除文件 os.remove("new.txt") print("文件已删除")
1.3 os.unlink(path)
import os # 删除文件(等同于 os.remove) os.unlink("file.txt") print("文件已删除")
1.4 os.open(path, flags, mode=0o777)
import os # 打开文件并获取文件描述符 fd = os.open("file.txt", os.O_RDWR | os.O_CREAT, 0o644) print(f"文件描述符: {fd}")
1.5 os.close(fd)
import os # 打开并关闭文件描述符 fd = os.open("file.txt", os.O_RDONLY) os.close(fd) print("文件描述符已关闭")
1.6 os.read(fd, n)
import os # 读取文件内容 fd = os.open("file.txt", os.O_RDONLY) content = os.read(fd, 1024) # 读取最多1024字节 os.close(fd) print(f"读取内容: {content}")
1.7 os.write(fd, bytes)
import os # 写入文件内容 fd = os.open("file.txt", os.O_WRONLY | os.O_CREAT, 0o644) os.write(fd, b"Hello, World!") os.close(fd) print("已写入文件")
1.8 os.symlink(src, dst)(Unix 系统)
import os # 创建符号链接(Unix 系统) os.symlink("file.txt", "link_to_file.txt") print("符号链接已创建")
1.9 os.readlink(path)(Unix 系统)
import os # 读取符号链接指向的路径 target = os.readlink("link_to_file.txt") print(f"符号链接指向: {target}")
2. 目录操作
2.1 os.mkdir(path, mode=0o777)
import os # 创建单个目录 os.mkdir("my_folder") print("目录已创建")
2.2 os.makedirs(path, mode=0o777, exist_ok=False)
import os # 递归创建多级目录 os.makedirs("parent/child/grandchild", exist_ok=True) print("多级目录已创建")
2.3 os.rmdir(path)
import os # 删除空目录 os.rmdir("my_folder") print("目录已删除")
2.4 os.removedirs(path)
import os # 递归删除空目录链 os.removedirs("parent/child/grandchild") print("空目录链已删除")
2.5 os.listdir(path)
import os # 列出目录内容 contents = os.listdir(".") print(f"目录内容: {contents}")
2.6 os.walk(top, topdown=True)
import os # 递归遍历目录 for dirpath, dirnames, filenames in os.walk("."): print(f"目录: {dirpath}, 子目录: {dirnames}, 文件: {filenames}")
2.7 os.chdir(path)
import os # 更改当前工作目录 os.chdir("my_folder") print(f"当前目录: {os.getcwd()}")
2.8 os.getcwd()
import os # 获取当前工作目录 cwd = os.getcwd() print(f"当前目录: {cwd}")
3. 路径和文件信息操作
3.1 os.path.join(*paths)
import os # 拼接路径 path = os.path.join("folder", "subfolder", "file.txt") print(f"拼接路径: {path}")
3.2 os.path.split(path)
import os # 拆分路径 path = "folder/subfolder/file.txt" head, tail = os.path.split(path) print(f"目录: {head}, 文件名: {tail}")
3.3 os.path.splitext(path)
import os # 拆分文件名和扩展名 path = "file.txt" name, ext = os.path.splitext(path) print(f"文件名: {name}, 扩展名: {ext}")
3.4 os.path.exists(path)
import os # 检查路径是否存在 if os.path.exists("file.txt"): print("文件存在") else: print("文件不存在")
3.5 os.path.isfile(path)
import os # 检查是否为文件 if os.path.isfile("file.txt"): print("这是一个文件") else: print("这不是文件")
3.6 os.path.isdir(path)
import os # 检查是否为目录 if os.path.isdir("my_folder"): print("这是一个目录") else: print("这不是目录")
3.7 os.path.abspath(path)
import os # 获取绝对路径 abs_path = os.path.abspath("file.txt") print(f"绝对路径: {abs_path}")
3.8 os.path.basename(path)
import os # 获取路径最后部分 path = "folder/subfolder/file.txt" base = os.path.basename(path) print(f"最后部分: {base}")
3.9 os.path.dirname(path)
import os # 获取目录部分 path = "folder/subfolder/file.txt" dir_name = os.path.dirname(path) print(f"目录部分: {dir_name}")
3.10 os.stat(path)
import os import time # 获取文件元信息 stat_info = os.stat("file.txt") print(f"文件大小: {stat_info.st_size} 字节") print(f"最后修改时间: {time.ctime(stat_info.st_mtime)}")
3.11 os.path.getsize(path)
import os # 获取文件大小 size = os.path.getsize("file.txt") print(f"文件大小: {size} 字节")
3.12 os.path.getmtime(path)
import os import time # 获取最后修改时间 mtime = os.path.getmtime("file.txt") print(f"最后修改时间: {time.ctime(mtime)}")
3.13 os.path.getatime(path)
import os import time # 获取最后访问时间 atime = os.path.getatime("file.txt") print(f"最后访问时间: {time.ctime(atime)}")
3.14 os.path.getctime(path)
import os import time # 获取创建时间(Windows)或元数据修改时间(Unix) ctime = os.path.getctime("file.txt") print(f"创建时间: {time.ctime(ctime)}")
3.15 os.chmod(path, mode)(Unix 系统)
import os # 更改文件权限 os.chmod("file.txt", 0o644) # 设置为 rw-r--r-- print("文件权限已更改")
3.16 os.access(path, mode)
import os # 检查文件权限 if os.access("file.txt", os.R_OK): print("文件可读") else: print("文件不可读")
注意事项
1、运行环境:某些方法(如 os.symlink、os.readlink、os.chmod)在 Windows 上可能不可用或行为不同,建议在 Unix 系统(如 Linux、macOS)上测试。
2、文件准备:示例中假设某些文件(如 file.txt)存在。如果不存在,需先创建,否则会抛出 FileNotFoundError。
with open("file.txt", "w") as f: f.write("Hello, World!")

浙公网安备 33010602011771号