借助 os 库,可完成文件大小查询、文件 / 文件夹删除、重命名等操作,满足多样化文件管理需求。
os 库 path 模块的 getsize(path)
方法,能获取指定路径文件占用内存大小,单位为字节 。字节是计算机存储基本单位,常见存储单位换算关系如下:
单位 | 换算关系 | 说明 |
---|---|---|
字节(Byte) | 1 字节 = 8 位(bit) | 存储基本单元 |
千字节(KB) | 1KB = 1024 Byte | 日常文件大小常用表述 |
兆字节(MB) | 1MB = 1024 KB | 如文档、小图片大小 |
吉字节(GB) | 1GB = 1024 MB | 视频、大型软件常用 |
太字节(TB) | 1TB = 1024 GB | 大容量存储(如硬盘) |
import os
path = r'E:\书代码\数据2\内容c\Python程序代码1.txt'
print(os.path.getsize(path))
代码解析:导入 os 库,定义文件路径,调用 os.path.getsize()
获取文件大小(如输出 962
,代表该文件占 962 字节 )
os 库提供不同函数,适配文件、文件夹删除场景:
remove(path)
)os.remove(path)
可删除指定路径文件。示例代码:
import os
os.remove(r'E:\书代码1\数据1\内容b\dwed.txt')
代码解析:若 E:\书代码1\数据1\内容b
路径下有 dwed.txt
文件,执行代码会删除该文件。
rmdir(path)
)os.rmdir(path)
用于删除路径中最后一层空文件夹 ,无法递归删除非空路径全部文件夹。示例代码:
import os
os.rmdir('数据3\内层1')
用 PyCharm、Spyder 等编辑器执行删除 / 重命名代码,可能遇 PermissionError: [WinError 5] 拒绝访问
。因编辑器占用文件,致访问冲突。建议学习初期用 Python 自带 IDLE 运行代码;若遇此错误,检查文件是否被其他程序(如 Word 打开文档、记事本编辑文件 )占用,关闭相关程序再操作。
os 库 rename()
和 renames()
函数,实现文件 / 文件夹重命名,用法有差异:
os.rename(src, dst)
:修改指定文件 / 文件夹名称,需保证 src
路径存在 ,仅改名称,不改变存储位置 。os.renames(src, dst)
:递归修改文件 / 文件夹名称,若 dst
路径部分不存在,会自动创建路径(类似 makedirs()
递归创建文件夹特性 )。import os
# 批量重命名文件夹示例
for i in range(1, 201):
old = 'E:/书代码/第9章/数据1/文件夹' + str(i)
new = 'E:/书代码/第9章/数据1/文件夹' + str(i + 200)
os.rename(old, new) # 重命名单个文件/文件夹
os.renames('E:/书代码/第9章/数据1/文件夹201', 'E:/书代码/第9章/数据2/文件夹201')
# 递归修改路径,实现文件夹“移动”效果
代码解析:for
循环用 rename()
批量修改文件夹名(仅改名称,位置不变 );renames()
递归修改路径,把 “数据 1” 下 “文件夹 201” 移到 “数据 2” 下(自动处理路径创建 )。
link(src, dst)
)os 库 os.link(src, dst)
函数,通过创建硬链接 复制文件。示例代码:
import os
os.link(r'E:/书代码/报告合集.pdf', r'E:/书代码/数据1/报告合集.pdf')
代码解析:执行后,把 “报告合集.pdf” 从原路径复制到 E:/书代码/数据1
路径下,实现文件复制(硬链接特性:修改原文件或链接文件,另一方会同步变化;删除原文件,链接文件仍可访问 )。
listdir(路径)
)os.listdir(路径)
方法,获取指定路径下全部文件名(含文件和文件夹名称 ) 。路径写 .
代表当前目录 ,写 ..
代表当前目录的上一级目录 。
import os
print('相对路径中有:', os.listdir('.'))
代码解析:执行后,以列表形式输出当前目录下所有文件、文件夹名称(如 ['数据1', '数据2', '第9章第1个程序.py']
)。
import os
file_total_size = 0
for file_name in os.listdir('.'):
file_dir = os.path.join(os.getcwd(), file_name)
file_total_size += os.path.getsize(file_dir)
print(file_total_size / 1024)
代码解析:
file_total_size
统计总大小;os.path.join()
拼接完整路径;os.path.getsize()
累加文件大小(仅统计当前目录下文件,不深入子文件夹统计 ,若需统计子文件夹,需结合递归或判断是否为文件夹再处理 );os 库 path 模块提供 3 种方法,判断路径对应是文件、文件夹,还是是否存在:
方法 | 功能描述 | 返回值 |
---|---|---|
os.path.exists(path) |
判断路径对应的文件 / 文件夹是否存在 | 存在返回 True ,否则 False |
os.path.isfile(path) |
判断路径是否对应文件 | 是文件返回 True ,否则 False |
os.path.isdir(path) |
判断路径是否对应文件夹 | 是文件夹返回 True ,否则 False |
import os
path = r'E:\书代码\数据2\内容c\Python程序代码1.txt'
print(os.path.exists(path), end='\t')
print(os.path.isfile(path), end='\t')
print(os.path.isdir(path), end='\t')
代码解析:依次判断路径是否存在、是否为文件、是否为文件夹,输出结果(如文件存在时,输出 True True False
,代表存在、是文件、不是文件夹 )。
用 os.listdir()
获取文件夹内所有文件名后,可结合上述方法判断类型:若为文件,统计大小;若为文件夹,可进入文件夹(拼接路径,再用 os.listdir()
递归处理 ),实现深入文件夹层级的操作(如遍历所有文件统计总大小、批量处理文件等 )。