组织文件
我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
学习重点
复制文件 和文件夹
文件和文件夹的移动与改名
永久删除文件和文件夹
用 send2trash 模块安全的删除
遍历目录树 os.walk()
用 zipfile 模块压缩文件
读取 zip
从 zip 文件中解压缩
创建和添加到 zip
shutil 模块
shutil(或称为 shell 工具)包含一些函数,可以让你在 Python 中复制,移动,改名和删除文件.
开山篇必须引入 shutil 模块
- 引入 shutil
import shutil
复制文件和文件夹
shutil.copy(原路径,目标路径) 将原路径 source 处的文件复制到目标路径的文件处
该函数返回一个字符串,表示被复制文件的路径
import shutil
import os
os.makedirs('./copy')
shutil.copy('C:/Users/Administrator/Desktop/个人简历.doc', './copy/index.doc')
# 结果就是把这个原目录下的文件复制到我的文件夹下
# 注意结果就是反斜杠
文件和文件夹的移动与改名
- shutil.move(源路径,新路径)
import shutil
shutil.move('./copy/index.doc', './哈哈.doc')
永久删除文件和文件夹
利用 os 模块中的函数,可以删除一个文件或一个空文件夹
利用 shutil 模块可以删除一个文件夹及其所有的内容
删除单个文件
import os
os.unlink("./doc.txt") # 删除单个文件
删除单个文件夹,该文件夹必须为空
import os
os.rmdir('./copy')
删除文件夹它里面的所有内容和文件都删除(慎重使用不可恢复)
- shutil.rmtree
import shutil
shutil.rmtree('./copy')
用 send2trash 模块安全的删除(推荐使用)
- 这个模块相当于把文件扔到了回收站,你可以直接还原他而 shutil.rmtree 是直接删除
第一步安装模块
pip install send2trash
第二步 删除
- send2trash.send2trash
import send2trash
send2trash.send2trash("./copy")
遍历目录树
- 要是想遍历一个文件夹下面所有子文件夹 和子文件夹文件等等 必须使用 os.walk()
import os
for folderName, subfolders, filenames in os.walk('./all'):
print("当前目录是" + folderName)
for subfolder in subfolders:
print('子文件目录' + subfolder)
for filename in filenames:
print('文件名称' + filename)
用 zipfile 模块
(1) 读取 zip 文件
- zipfile.Zipfile(路径)
import zipfile
result = zipfile.ZipFile('./zip.zip')
listname = result.namelist()
print(listname)
# 结果
# ['zip/', 'zip/1.txt', 'zip/2.txt', 'zip/3.txt', 'zip/4.txt']
(2) 获取压缩包里面的内容
- namelist(), getinfo(), file_size
import zipfile
result = zipfile.ZipFile('./zip.zip') # 读取压缩包
listname = result.namelist() # 获取到名称集合
item = result.getinfo(listname[1]) # 获取到文件信息
size = item.file_size # 获取到文件大小
print(item)
print(size)
(3)解压缩
- extractall()方法 解压缩所有文件和文件夹
import zipfile
result = zipfile.ZipFile('./zip.zip') # 读取压缩包
result.extractall() # 解压缩全部
result.close() # 关闭
- 要是只想解压缩单个文件也可以
import zipfile
zipall = zipfile.ZipFile('./zip.zip') # 读取压缩包
result = zipall.namelist() # 获取到文件列表
zipall.extract(result[1]) # 解压缩其中的一个文件
zipall.close() # 关闭
(4) 创建和添加到 zip 文件
必须以写入的模式打开 ZipFile 对象,即传入’w’作为第二个参数,传入’a’ 就代表继续写入 。
类似以写模式打开一个文本文件 他这个只能到第一层,里面要是有嵌套的则没有办法压缩
write()方法第一个参数是一个字符串,代表要压缩的文件名,第二个参数是压缩类型的参数
import zipfile
zipall = zipfile.ZipFile('./new.zip', 'w') # 写入压缩包
zipall.write('./all', compress_type=zipfile.ZIP_DEFLATED)
zipall.close()