python之shutil模块详解编程语言

shutil模块是进行文件夹或者文件的拷贝,压缩,重命名等操作的第三方模块

下面我们来介绍一下shutil模块

1、shutil.copyfileobj,拷贝文件的内容

src = "c:/tmp/a_old.txt" 
det = "c:/tmp/a_new.txt" 
shutil.copyfileobj(open(src,"r"),open(det,"w")) 
 
#执行上面这个命令,我们可以看到新建了一个a_new的文件,并把a_old中的内容拷贝到a_new中 

2、shutil.copyfile,拷贝文件

shutil.copyfile(src,det) 
 
#执行上面这个命令,我们可以看到新拷贝了一个a_new的文件 

3、shutil.copymode,拷贝文件权限,其他信息比如内容,组,用户信息均不变

det = "c:/tmp/a_new_mode.txt" 
shutil.copymode(src,det) 
#使用这个命令,det要首先创建一个文件,我们可以看到这个文件的内容未变化 

4、shutil.coypstat,拷贝文件的状态信息,这个命令也需要先创建然后一个文件,然后拷贝状态信息到目的文件,包括mode bits, atime, mtime, flags这些信息

det = "c:/tmp/a_new_stat.txt" 
shutil.copystat(src,det) 

5、shutil.copy,拷贝文件和权限

det = "c:/tmp/a_copy.txt" 
shutil.copy(src,det) 

6、shutil.copy2,拷贝文件和状态信息

det = "c:/tmp/a_copy2.txt" 
shutil.copy2(src,det) 

7、shutil.copytree,进行递归拷贝,默认软连接不拷贝

# shutil.copytree(src,des,symlinks=None,ignore=None) 
#最简单的用户,进行递归拷贝,des这个文件夹要不存在,才可以执行成功,这个是拷贝a目录下的文件,而不会拷贝a这个目录本身 
src = "c:/a" 
dst = "c:/4" 
# shutil.copytree(src,dst) 

8、shutil.retree,递归删除文件

src = "c:/3" 
shutil.rmtree(src) 

9、shutil.move,递归的移动文件或者目录,原文件或者目录就不存在了

# shutil.move() 
# src = "c:/4" 
# shutil.move(src,"c:/4_new") 
 
# src = "C:/4_new/b/c/d.txt" 
# dst = "C:/4_new/f.txt" 
# shutil.move(src,dst) 

10、shutil.make_archive,压缩文件夹

# 下面是make_archive的参数 
# base_name 压缩的目录或者名称,如果只有名称,则会在把压缩的文件放在当前目录 
# format 压缩包的种类,zip tar bztar gztar 
# root_dir 要压缩的文件夹路径 
# owner 用户,默认是当前用户 
# group 组,默认是当前组 
# logger 用于记录日志文件,通常在logging.Logger对象 
 
 
r = shutil.make_archive(base_name="e:/new/xxx",format="zip",root_dir="C:/2/") 
print(r) 
# e:/new/xxx.zip 
# 这个命令的意思就是 
# 压缩C:/2/这个目录下的所有文件夹和文件,然后创建zip压缩包,把zip压缩包放在e:/new/目录下,重命名为xxx,返回的值就是base_name的值 

压缩的例子和支持的压缩包的格式

import shutil 
import os 
 
 
# for i in dir(shutil): 
#     print(i) 
 
 
print(os.path.basename(os.path.abspath(__file__))) 
 
file_path = os.path.dirname(os.path.abspath(__file__)) 
 
src_file = file_path + "//" + "xxx" + "." + "py" 
# des_file = file_path + "//" + "xxx_bak" + "." + "py" 
 
 
base_name = file_path + "//" + "压缩包" 
format_type_list  = ["zip","tar","gztar","bztar","xztar"] 
 
root_dir = file_path 
 
for format_type in format_type_list: 
    for i in range(1000): 
        base_name = file_path + "//" + "压缩包" + str(i) 
        shutil.make_archive(base_name=base_name,format=format_type,root_dir=root_dir) 

  

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20897.html

(0)
上一篇 2021年7月19日 23:52
下一篇 2021年7月19日 23:52

相关推荐

发表回复

登录后才能评论