python3 shutil模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 shutil模块相关的知识,希望对你有一定的参考价值。
穿插一下sys模块的argv方法,它可以接收执行脚本后面的参数
首先在脚本里面定义如下:
import sys
print(sys.argv)
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
执行脚本:
[[email protected] ~]# python3 aa.py a b
['aa.py', 'a', 'b', 'c'] //对应着print(sys.argv)
aa.py //对应着print(sys.argv[0])
a //对应着print(sys.argv[1])
b //对应着print(sys.argv[2])
shutil模块的作用:高级的文件、文件夹、压缩包处理模块
1、文件内容的拷贝,使用copyfileobj方法
import shutil
f1 = open("passwd","r",encoding="utf-8")
f2 = open("passwd.bak","w",encoding="utf-8")
shutil.copyfileobj(f1,f2)
还有一种比较简单的方式:
>>> import shutil
>>> shutil.copyfile("passwd","passwd.old") //使用copyfile方法就可直接对文件进行复制
'passwd.old'
2、仅拷贝文件的权限,其余属性都不拷贝,前提是必须有目标文件,如果目标文件不存在则报错
[[email protected] ~]# ll passwd
-rwxr-xr-x. 1 xiaoming xiaoming 1576 3月 21 14:52 passwd
[[email protected] ~]# ll passwd.bak //此文件内容为空
-rw-r--r--. 1 root root 0 3月 21 14:56 passwd.bak
>>> import shutil
>>> shutil.copymode("passwd","passwd.bak") //copymode对文件的权限进行拷贝
再进行查看两个文件的属性:
[[email protected] ~]# ll passwd
-rwxr-xr-x. 1 xiaoming xiaoming 1576 3月 21 14:52 passwd
[[email protected] ~]# ll passwd.bak //文件内容为空,但是仅有权限发生了改变
-rwxr-xr-x. 1 root root 0 3月 21 14:56 passwd.bak
3、拷贝文件的所有状态信息,不拷贝文件内容
>>> import shutil
>>> shutil.copystat("passwd","passwd.bak")
4、拷贝文件和权限,但是不拷贝属主和属组
>>> shutil.copy("passwd","passwd.bak")
'passwd.bak'
5、拷贝整个目录树
>>> import shutil
>>> shutil.copytree("/etc","/etc_new")
删除整个目录树
>>> shutil.rmtree("/etc_new")
6、文件的移动
>>> import shutil
>>> shutil.move("passwd","/tmp")
'/tmp/passwd'
7、文件的打包
>>> shutil.make_archive("test","gztar","/etc") //"test"为打包后的名称,可以指定路径;"gztar"为打包类型,还可以写zip;"/etc"为需要打包的程序
'/root/test.tar.gz'
文件的打包还可以使用另外一种方式
import tarfile
tar = tarfile.open("XXX.tar.gz","w") //"XXX.tar.gz"打开文件的名字,也就是tar包名
tar.add("/etc/passwd",arcname="passwd") //添加需要压缩的文件
tar.add("/etc/shadow",arcname="shadow")
tar.close()
有了压缩,那么解压呢?
tar = tarfile.open("XXX.tar.gz","r")
tar.extractall("/usr/local") //tar.extractall()可设置解压路径
tar.close()
以上是关于python3 shutil模块的主要内容,如果未能解决你的问题,请参考以下文章