python-文件拷贝、压缩和解压(shutil、zipfile、tarfile)

昌乐生
2023-12-01

目录

shutil模块(拷贝和压缩)

文件拷贝

删除文件和目录

移动文件

压缩文件

zipfile解压缩

创建压缩包

读取压缩包文件信息

解压单个文件

解压所有文件

tarfile解压缩


shutil模块(拷贝和压缩)

shutil模块是python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。

os模块提供了对目录或文件的一般操作。shutil 模块作为补充,提供了移动、复制、压缩、解压等操作,这些os模块都没有提供。

文件拷贝

import shutil

# 参数1为要拷贝的文件或目录,参数2为拷贝文件存放的位置
shutil.copy('main.py','path2/main.py')  # 文件拷贝
shutil.copyfile('main.py','main1.py')   # 文件拷贝
shutil.copytree('path/dir','path2')   # 目录拷贝,当path2不存在的时候才能正常拷贝
shutil.copytree('../hrun','path1',ignore=shutil.ignore_patterns("*.csv"))   # 拷贝时排除某些文件(可以是具体的,也可以是模糊匹配)

删除文件和目录

删除整个文件夹,无论是否为空,这个方法要谨慎使用

shutil.rmtree('path1')

移动文件

shutil.move('源地址','目标地址')

压缩文件

# 参数:
# 1、压缩后的文件存放位置及文件名;
# 2、压缩文件格式;
# 3、目标压缩文件或文件夹
shutil.make_archive('./path/zipfile','zip',root_dir='./path2')

zipfile解压缩

创建压缩包

import zipfile
import os

now_pathflies = os.listdir(os.getcwd())  # 获得当前文件下的所有文件及目录

with zipfile.ZipFile('myzipfile.zip', 'w') as zipobj:
    # 使用write():创建一个压缩包
    for file in now_pathflies:
        zipobj.write(file)

读取压缩包文件信息

with zipfile.ZipFile('myzipfile.zip', 'r') as zipobj:
    # 使用.namelist():读取压缩包中的文件信息
    print(zipobj.namelist())

解压单个文件

with zipfile.ZipFile("myzipfile.zip", "r") as zipobj:
    # 使用.extract():将压缩文件中的单个文件解压到指定文件夹中,指定目录不存在会自动创建
    zipobj.extract("demo.py", './path')

解压所有文件

with zipfile.ZipFile("myzipfile.zip", "r") as zipobj:
    # 使用.extractall():将压缩文件中的所有文件解压到指定文件目录中,指定目录不存在会自动创建
    zipobj.extractall('./path/dir')

tarfile解压缩

import tarfile

with tarfile.open('test.tar', 'w') as tar:
    # # 创建一个压缩文件对象
    tar.add('./path')  # 添加文件到压缩文件对象中

with tarfile.open('test.tar', 'r') as tar:
    # 默认解压到当前位置,可设置解压地址
    tar.extractall('./tarfile/test0')
 类似资料: