复制
import os
import shutil
'''
shutil.copyfile( src, dst) #文件复制从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst) #移动文件或重命名
shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的
shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间
shutil.copy( src, dst) #复制一个文件到一个文件
shutil.copy2( src, dst) #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
shutil.copytree( src, dst, True) #把src拷贝一份dst,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
'''
def dir_copy(srcpath,dstpath):
# 复制一个目录下的所有文件到另一个目录下
if not os.path.exists(srcpath):
raise Exception('{}不存在'.format(srcpath))
if not os.path.exists(dstpath):
# 创建目标目录
os.makedirs(dstpath)
# 读取源目录的所有子文件的地址
for root,dirs,files in os.walk(srcpath,True):
dst_root = root.replace(srcpath,dstpath)
if not os.path.exists(dst_root):
# 创建目标目录
os.makedirs(dst_root)
# 操作每一个文件
for eachfile in files:
# 复制过去
shutil.copy(os.path.join(root,eachfile),dst_root)
删除
import os
import shutil
'''
shutil.rmtree( src ) #递归删除一个目录以及目录内的所有内容
'''
def del_file(path):
'''
递归删除目录的所有文件
'''
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path, i)
if os.path.isdir(c_path):
del_file(c_path)
os.removedirs(c_path)
else:
os.remove(c_path)
压缩、解压
import shutil
import zipfile
import os
def dir_archive(srcpath,dstpath):
'''
srcpath:待压缩目录
dstpath:压缩到的地址,会自动加上.zip
'''
# 压缩
shutil.make_archive(dstpath,'zip',srcpath)
def dir_extract(srcpath,dstpath):
'''
srcpath:zip文件地址
dstpath:解压到的目录
'''
## 加上解压目录本身的名字
#dir_name = srcpath.split('/')[-1].split('\\')[-1].split('.')[0]
#dstpath = os.path.join(dstpath,dir_name)
#if not os.path.isdir(dstpath):
# os.makedirs(dstpath)
# 解压
z = zipfile.ZipFile(srcpath, 'r')
z.extractall(path=dstpath)
z.close()