Python 基础

shutil模块


高级文件操作,包括copying, setting permissions, archive 等。 

常用操作


复制文件 copying files 

copyfileobj() 和 copyfile(): copyfileobj中打开文件,文件的读写要以bytes形式,“wb” or "rb"

importshutil
f1=open("note_shutil.txt","rb")
f2=open("note_test","wb")
shutil.copyfileobj(f1,f2) 
# copyfileobj 需要打开文件

shutil.copyfile("note_shutil.txt","shutilM2")
#不用打开文件,直接用文件名copy就可以
copyfileobj 和 copyfile
from shutil import *
from glob import glob

print("BEFORE:", glob("shutil_copyfile.*"))
copyfile("shutil_copyfile.py", "shutil_copyfile.py.copy")
print("AFTER", glob("shutil_copyfile.*"))
另一个copyfile的例子

copy(): 文件和权限都拷贝。 将文件复制到一个文件夹里; 文件的permission也一同复制; 但是修改和打开的时间并没有复制, copy2()就可以做到这点

os.mkdir("example")  # 在同目录创建 example 文件夹
print("BEFORE: ", os.listdir("example"))
copy("shutil_copyfile.py.copy", "example")
print("AFTER:", os.listdir("example"))
copy()

复制文件许可 copying file meta-data

copymode(): 仅拷贝权限。内容、组、用户均不变

copystat():不拷贝文件内容,拷贝状态的所有属性,包括:mode bits, atime, mtime, flags

文档目录 working with dictionary tree

copytree(): 递归地拷贝文件

shutil.copytree("example", "new_example")
shutil.rmtree("new_example")
shutil.move()

压缩 Archive

创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
      如:www                        =>保存至当前路径
      如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
importshutil,os
shutil.make_archive('shutil_archive_test','zip',root_dir="D:/Python/HW4ATM")
make_archive

shutil 对压缩包的处理是调用 Zipfile 和 Tarfile 模块来进行。 

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall()
z.close()

zipfile 压缩解压
zipfile
import tarfile

# 压缩
tar = tarfile.open('your.tar','w')
tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')
tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')
tar.close()

# 解压
tar = tarfile.open('your.tar','r')
tar.extractall()  # 可设置解压地址
tar.close()

tarfile 压缩解压
Tarfile
原文地址:https://www.cnblogs.com/lg100lg100/p/7403689.html