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} 不是目录或不存在")著作权归文章作者所有。 未经作者允许禁止转载!