Python 组织文件

组织文件

我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯

学习重点

  • 复制文件 和文件夹

  • 文件和文件夹的移动与改名

  • 永久删除文件和文件夹

  • 用 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()

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录