shutil模块的基本使用

# !/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Author   : zsc
# @FILE     : shutil用法.py
# @Time     : 2019/7/4 16:34
# @Software : PyCharm
import os
import shutil

"""
主要作用与拷贝文件用的
"""
# 1.shutil.copyfileobj(文件1,文件2):将文件1的数据覆盖copy给文件2 , 原有内容会被覆盖, 需要打开文件
""" 
copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的长度,用做缓冲区大小
fsrc: 源文件
fdst: 复制至fdst文件
length: 缓冲区大小,即fsrc每次读取的长度
"""
f1 = open("1.txt", "r", encoding="utf-8")
f2 = open("1.txt", "w", encoding="utf-8")   # 目标文件 1.txt 是不需要创建
shutil.copyfileobj(f1, f2, length=2014)
f1.close()
f2.close()

# 2.shutil.copyfile(文件1,文件2): 1.txt的数据覆盖copy给3.txt  不用打开文件,直接用文件名进行覆盖copy,   比第一个好
"""
copyfile(src, dst): 将src文件内容复制至dst文件  
shutil.copyfile("file.txt","file_copy.txt")
src: 源文件路径
dst: 复制至dst文件,若dst文件不存在,将会生成一个dst文件;若存在将会被覆盖
follow_symlinks:设置为True时,若src为软连接,则当成文件复制;如果设置为False,复制软连接。默认为True。Python3新增参数
"""
shutil.copyfile("1.txt","3.txt")  # 目标文件 3.txt 是不需要创建

# 3.shutil.copystat(文件1,文件):只拷贝了权限  拷贝权限
"""
copystat(src, dst): 将权限,上次访问时间,上次修改时间以及src的标志复制到dst。文件内容,所有者和组不受影响
src: 源文件路径
dst: 将权限复制至dst文件,dst路径必须是真实的路径,并且文件必须存在,否则将会报文件找不到错误
follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限、上次访问时间,上次修改时间以及src的标志,
如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数
"""
shutil.copystat("4.txt", "4_copy.txt")

# 4、shutil.copy(文件1,文件2):拷贝文件和权限都进行copy
"""
copy(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。
                 权限会被一并复制。本质是先后调用了copyfile与copymode而已
src:源文件路径
dst:复制至dst文件夹或文件
follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数
"""
shutil.copy("4.txt","file_copy.txt")   # 直接拷贝当前文件目录
# 或者
shutil.copy("1.txt", os.path.join(os.getcwd(), 'files', "copy.txt"))  # 拷贝文件夹下面

# 5.shutil.copy2(文件1,文件2):拷贝了文件和状态信息。
"""
copy2(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。
                  权限、上次访问时间、上次修改时间和src的标志会一并复制至dst。 本质是先后调用了copyfile与copystat方法而已
src:源文件路径
dst:复制至dst文件夹或文件
follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限、上次访问时间,上次修改时间以及src的标志,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数
"""
shutil.copy2("4.txt", "file_copy2.txt")
# 或者
shutil.copy2("4.txt", os.path.join(os.getcwd(), "files", "copy2.txt"))

# 7.shutil.copytree(源目录,目标目录):可以递归copy多个目录到指定目录下。
"""
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件
例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
"""
folder1 = os.path.join(os.getcwd(), "files")
# bbb与ddd文件夹都可以不存在,会自动创建,  层级拷贝, 已经存在会报错
folder2 = os.path.join(os.getcwd(), "bbb", "ddd")
# 将"abc.txt","bcd.txt"忽略,不复制   shutil.ignore_patterns(*patterns)
shutil.copytree(folder1, folder2, ignore=shutil.ignore_patterns("abc.txt", "bcd.txt"))

# 8、shutil.move(folder3, folder4)   移动文件夹
# 示例一,将src文件夹移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
folder3 = os.path.join(os.getcwd(), "bbb")
folder4 = os.path.join(os.getcwd(), "QQQ")
shutil.move(folder3, folder4)

# 示例二,将src文件移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
file1 = os.path.join(os.getcwd(), "4.txt")
folder4 = os.path.join(os.getcwd(), "QQQ")
shutil.move(file1, folder4)
# # 示例三,将src文件重命名为dst文件(dst文件存在,将会覆盖)
file1 = os.path.join(os.getcwd(), "aaa.txt")
file2 = os.path.join(os.getcwd(), "bbb.txt")
shutil.move(file1, file2)


# 10.shutil.make_archive():可以压缩,打包文件。
import shutil
shutil.make_archive("3.txt", "zip", os.path.join(os.getcwd(), "a"))
"""
创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www                        =>保存至当前路径
如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
format:	压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir:	要压缩的文件夹路径(默认当前目录)
owner:	用户,默认当前用户
group:	组,默认当前组
logger:	用于记录日志,通常是logging.Logger对象
"""

参考链接: 

https://www.cnblogs.com/sui776265233/p/9225417.html

https://www.jb51.net/article/145522.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值