Python关于操作文件夹的讲解——Python 操作文件和文件夹

    借助 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 库提供不同函数,适配文件、文件夹删除场景:

1. 删除文件(remove(path) )

os.remove(path) 可删除指定路径文件。示例代码:

import os
os.remove(r'E:\书代码1\数据1\内容b\dwed.txt') 

代码解析:若 E:\书代码1\数据1\内容b 路径下有 dwed.txt 文件,执行代码会删除该文件。

2. 删除文件夹(rmdir(path) )

os.rmdir(path) 用于删除路径中最后一层空文件夹 ,无法递归删除非空路径全部文件夹。示例代码:

import os
os.rmdir('数据3\内层1') 
3. 注意事项(PermissionError )

用 PyCharm、Spyder 等编辑器执行删除 / 重命名代码,可能遇 PermissionError: [WinError 5] 拒绝访问 。因编辑器占用文件,致访问冲突。建议学习初期用 Python 自带 IDLE 运行代码;若遇此错误,检查文件是否被其他程序(如 Word 打开文档、记事本编辑文件 )占用,关闭相关程序再操作。

三)重命名文件或文件夹

os 库 rename() 和 renames() 函数,实现文件 / 文件夹重命名,用法有差异:

1. 函数语法与功能
  • 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(路径) 方法,获取指定路径下全部文件名(含文件和文件夹名称 ) 。路径写 . 代表当前目录 ,写 .. 代表当前目录的上一级目录 。

1. 基础用法示例
import os
print('相对路径中有:', os.listdir('.')) 

 

代码解析:执行后,以列表形式输出当前目录下所有文件、文件夹名称(如 ['数据1', '数据2', '第9章第1个程序.py'] )。

2. 统计当前文件夹文件总大小(需注意局限性 )

 

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() 累加文件大小(仅统计当前目录下文件,不深入子文件夹统计 ,若需统计子文件夹,需结合递归或判断是否为文件夹再处理 );
  • 最后输出总大小(单位换算为 KB )。

(六)判断文件和文件夹

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() 递归处理 ),实现深入文件夹层级的操作(如遍历所有文件统计总大小、批量处理文件等 )。

 

你可能感兴趣的:(python,开发语言)