创建文件(夹)
import os
import shutil
# 创建文件夹
os.mkdir() # 创建路径中最后一级目录,如果之前目录不存在会报错!!!
os.makedirs() # 创建多层目录,如果之前目录都不存在会自动创建;如果已存在会报错. exist_ok=False/True.
os.remove(path) # 删除文件
os.removedirs(path) # 删除空文件夹
os.rmdir(path) # 删除空文件夹
shutil.rmtree(path) # 递归删除文件夹,即:删除非空文件夹
zipfile
compress_level
:
compress_type
: 注意lzma和bzip2类,本地可能打不开
- zipfile.ZIP_STORED : (不压缩)
- zipfile.ZIP_DEFLATED: 常用的ZIP压缩方法的数字常数。需要 zlib模块。
- zipfile.ZIP_BZIP2: BZIP2压缩
- zipfile.ZIP_LZMA : LZMA压缩
打包
import zipfile, tarfile, rarfile, gzipfile
def zip_dir(source_path, target_path):
zz = zipfile.ZipFile(target_path, "w", zipfile.ZIP_DEFLATED)
for path, dirs, files in os.walk(source_path): # 遍历文件夹下目录:去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
for filename in files:
zz.write(os.path.join(path, filename), arcname=filename)
zz.close()
def tar_dir(source_path, target_path):
tt = tarfile.open(target_path, "w:bz2")
for path, dirs, files in os.walk(source_path):
for filename in files:
tt.add(os.path.join(path, filename), arcname=filename)
tt.close()
def rar_dir(source_path, target_path):
rr = tarfile.open(target_path, "w")
for path, dirs, files in os.walk(source_path):
for filename in files:
rr.add(os.path.join(path, filename), arcname=filename)
rr.close()
# 针对单个文件:
def gzip_file():
g = gzip.GzipFile('demo.gz', 'wb')
g.write('hello world')
g.close()
解压
z = zipfile.ZipFile('demo.zip', 'r')
z.extractall() # 可指定解压路径
z.close()
g = gzip.GzipFile('demo.gz', 'rb')
print(g.read())
Question
- 打包压缩率太低?