64、文件/目录常用操作

小白量化 2025-12-18 11:52:51 24 举报

Python的os模块提供了丰富的与操作系统交互的功能,包括文件和目录操作、环境变量、进程管理等。下面我将分门别类地介绍其主要功能及常用操作。


1、文件或目录重命名:os.rename(源文件或目录的路径, 目标文件或目录的新路径)。

os模块中的rename函数用于重命名文件或目录,也可以用于将文件或目录移动到另一个位置(如果目标路径与源路径不在同一个目录下,则相当于移动并重命名)。

# 语法格式:
os.rename(src, dst)

参数:
src: 源文件或目录的路径
dst: 目标文件或目录的路径

# 示例
import os

# 文件重命名
os.rename("weixin.png", 'weixin[备份].png')

# 移动文件/目录
os.rename("weixin[备份].png", r"E:\practice\weixin[备份].png")


注意:路径可以是绝对路径,也可以是相对路径
(1)文件或目录必须存在,否则报错

# 示例
import os
# 重命名(相对路径)
os.rename("test_test.txt", "test.txt") 
# FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'test_test.txt' -> 'test.txt'

(2)不支持跨盘的重命名操作

# 示例
import os
# 从E盘移动到D盘
os.rename("xiaobai.py", r"D:\xiaobai.py")
# OSError: [WinError 17] 系统无法将文件移到不同的磁盘驱动器。: 'xiaobai.py' -> 'D:\\xiaobai.py'

(3)在操作之前,请确保确实想要进行此操作,尤其是处理敏感数据或系统文件时;因为操作不可撤销,有可能自己忘记后,自己都找不到了!

2、删除文件:os.remove(要删除的文件路径)

# 语法格式:
os.remove(path, *, dir_fd=None)

path:要删除的文件路

dir_fd:可选,文件描述符(高级用法)

# 示例
import os

# 创建测试文件
with open('test.txt', 'w') as f:
    f.write('将要被删除的内容')

# 检查文件是否存在
if os.path.exists('test.txt'):
    print('文件存在,准备删除...')

    # 删除文件
    os.remove('test.txt')
    print('文件已删除')

    # 验证删除
    print(f'文件还存在吗?{os.path.exists("test.txt")}')  # False

注意:

(1)文件必须存在,否则会报错

# 示例
import os
os.remove("test.txt")   # FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'test.txt'

(2)在删除文件之前,请确保确实想要删除该文件,因为一旦删除,就无法恢复(除非有备份)

3、创建目录:os.mkdir(要创建的目录路径)

# 语法格式:
os.mkdir(path, mode=0o777, *, dir_fd=None)

path:要创建的目录路径
mode:目录权限(Unix-like 系统有效,八进制数)
dir_fd:可选,文件描述符(高级用法)

# 示例
import os

# os.mkdir() - 创建单级目录
os.mkdir('single_dir')            # 创建一层目录

# os.makedirs() - 创建多级目录(递归创建)
os.makedirs('multi/level/dir')    # 创建多层目

注意:在尝试创建目录之前,必须确保该目录尚不存在,否则会报错

4、删除目录:os.rmdir(要删除的目录路径)

# 语法格式:
os.rmdir(path, *, dir_fd=None)

path:要删除的空目录路径

dir_fd:可选,文件描述符(高级用法)

# 示例
import os

# 创建空目录
os.mkdir('empty_directory')

# 检查是否为空目录
if os.path.isdir('empty_directory'):
    if not os.listdir('empty_directory'):  # 检查是否为空
        os.rmdir('empty_directory')
        print('空目录已删除')
    else:
        print('目录非空,无法删除')

注意:

(1)只能删除空目录,如果目录包含文件或子目录,则需要先删除这些内
(2)目录必须存在,否则报错
(3)在删除目录之前,请确保确实想要删除该目录,因为一旦删除,就无法恢复(除非有备份)

5、获取当前工作目录:os.getcwd()

# 语法格式:
os.getcwd()

(1)返回当前工作目录的路径(字符串)

(2)cwd 是 "Current Working Directory" 的缩写

(3)不需要任何参数

(4)返回值是当前Python程序所在的工作目录

# 示例
import os
# 获取当前目录
current_dir = os.getcwd()          # 获取当前工作目录

该功能在需要知道当前工作目录以便进行文件操作时非常有用

6、获取目录列表:os.listdir(要获取的目录路径)

# 语法格式:
os.listdir(path='.')

path:要列出内容的目录路径(默认为当前目录)

返回值:包含目录中所有条目名称的列表(字符串列表)

# 示例
import os

# 列出当前目录所有文件和目录
items = os.listdir('.')  # 或者 os.listdir()
print(f"当前目录内容: {items}")
print(f"条目数量: {len(items)}")
print(f"类型: {type(items)}")  #

# 按字母顺序排序
sorted_items = sorted(os.listdir('.'))
print(f"按字母排序: {sorted_items}")


7、检验路径是否存在:os.path.exists(要检查的路径)

# 语法格式:
os.path.exists(path)

path:要检查的路径(文件或目录)

返回值:布尔值,路径存在返回 True,否则返回 False

# 示例
import os

# 检查文件是否存在
file_path = 'example.txt'
if os.path.exists(file_path):
    print(f"文件 {file_path} 存在")
else:
    print(f"文件 {file_path} 不存在")
    # 可以创建文件
    with open(file_path, 'w') as f:
        f.write('新文件内容')

# 检查目录是否存在
dir_path = 'example_dir'
if os.path.exists(dir_path):
    print(f"目录 {dir_path} 存在")
else:
    print(f"目录 {dir_path} 不存在")
    # 可以创建目录
    os.makedirs(dir_path)

8、检验路径是否存在且为文件:os.path.isfile(要检查的路径)

# 语法格式:
os.path.isfile(path)

path:要检查的路径

返回值:布尔值,如果是文件且存在返回 True,否则返回 False

# 示例
import os

# 检查文件是否存在
file_path = 'example.txt'

if os.path.isfile(file_path):
    print(f"{file_path} 是一个文件")

    # 获取文件信息
    size = os.path.getsize(file_path)
    mtime = os.path.getmtime(file_path)
    from datetime import datetime

    print(f"文件大小: {size} 字节")
    print(f"修改时间: {datetime.fromtimestamp(mtime)}")
else:
    print(f"{file_path} 不是文件或不存在")


9、检验路径是否存在且为目录:os.path.isdir(要检查的路径)

# 语法格式:
os.path.isdir(path)

path:要检查的路径(字符串)

返回值:布尔值,如果路径存在且是一个目录则返回 True,否则返回 Fals

# 示例
import os

# 检查当前目录
current_dir = '.'
if os.path.isdir(current_dir):
    print(f"{current_dir} 是一个目录")

    # 列出目录内容
    contents = os.listdir(current_dir)
    print(f"目录内容: {contents}")
else:
    print(f"{current_dir} 不是目录或不存在")

# 检查绝对路径
abs_path = '/home/user'
if os.path.isdir(abs_path):
    print(f"{abs_path} 是一个目录")
else:
    print(f"{abs_path} 不是目录或不存在")


量化小白,从0开始学量化! 1

著作权归文章作者所有。 未经作者允许禁止转载!

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)