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!")

 

posted @ 2025-03-02 06:38  AlphaGeek  阅读(291)  评论(0)    收藏  举报