Python的shutil模块

shutill的作用

os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。比如说:绝对路径,父目录…… 但是,os文件的操作还应该包含移动 复制 打包 压缩 解压等操作,这些os模块都没有提供。
  而接下来的内容l则就是对os中文件操作的补充。–移动 复制 打包 压缩 解压

shutil.copy()

函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式。如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名。
python
import shutil
shutill.copy("a.txt","b.txt")

* 内部效果:复制文件的内容以及权限,先copyfile后copymode
* 实现src文件内容对dst文件的覆盖
python
k=r"C:\shutil_ceshi\de1"
print(shutil.copy(r"b1.txt",k))

- 如果dst为目录,则会在目录下新建一个一样的文件
- 返回值是新建文件的地址

shutill.copyfile()

“`python
print(shutil.copyfile(“a1.txt”,”b2.txt”))
print(os.stat(“a1.txt”))
print(os.stat(“b2.txt”))

- 如果b2不存在,就会在同级下创建一个该名称的文件,且把内容复制进去
!!!error  dis必须具有写权限,否则会抛出IOExecption

!!!
!!!note  shutill.copyfileobjt(src,dst,let)
```python
import shutil
f1=open("a1.txt","r",encoding="utf-8")
f2=open("b1.txt","w",encoding="utf-8")
print(shutil.copyfileobj(f1,f2,4))`




<div class="se-preview-section-delimiter"></div>
  • copy文件内容到另一个文件,可以copy指定大小的内容
    !!!error 注意! 在其中fsrc,fdst都是文件对象,都需要打开后才能进行复制操作
    !!!

!!!note shutil.copystat(src,dst)
- 复制所有的状态信息,包括权限,组,用户,时间等
!!!

!!!note shutil.copytree(src,dst,ignore)

import shutil
shutil.copytree(".\de2", ".\de4\de5\de6z" symlinks=True, ignore=shutil.ignore_patterns("*.pyc", "tmp*"))




<div class="se-preview-section-delimiter"></div>
  • 把目录移动到创建的递归目录下
  • 目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除

!!!error dst要递归的文件夹不能已存在注意对folder2目录父级目录要有可写权限,ignore的意思是排除
!!!

!!!note shutil.rmtree(path)

shutil.rmtree(r".\de4")  #删除当前目录下的de4目录及以下的内容




<div class="se-preview-section-delimiter"></div>
  • 可以递归删除目录下的目录及文件。
  • 与os.removedirs()不同的是,rmtree不管是否目标目录下有文件
    !!!

!!!note shutil.move(src,path)

shutil.move(r".\a1.txt",r".\de2")




<div class="se-preview-section-delimiter"></div>
  • 把当前文件移动到目标路径下
  • 对于同盘移动文件或目录,shutil.move基于复制,远不如os.rename高效。
    !!!

!!!note shutil.make_archive(base_name, format,…)

创建压缩包并返回文件路径,例如:zip、tar
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
- 如 data_bak =>保存至当前路径
- 如:/tmp/data_bak =>保存至/tmp/
- format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象

shutil.make_archive("b2_zip","zip",r".\de2")# 是把目标目录下的文件压缩到默认的当前目录
shutil.make_archive(r".\de1\b1_zip","zip",r".\de2") #是把目标目录下的文件压缩到指定的路径下




<div class="se-preview-section-delimiter"></div>

!!!

!!!note shutil对压缩的处理

import zipfile
with zipfile.ZipFile("test.zip", mode="w") as zipf:
   zipf.write("channel.zip")
   zipf.write("zip_test.py")
zipf = zipfile.ZipFile("test.zip")
print(zipf.namelist())




<div class="se-preview-section-delimiter"></div>
  • 写入文件
import zipfile
zipf = zipfile.ZipFile("test.zip")
zipf.extractall("channel1") #将所有文件解压到channel1目录下

!!!

- 把目录移动到创建的递归目录下
- 目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 

!!!error  dst要递归的文件夹不能已存在注意对folder2目录父级目录要有可写权限,ignore的意思是排除
!!!

!!!note shutil.rmtree(path)
```python
shutil.rmtree(r".\de4")  #删除当前目录下的de4目录及以下的内容




<div class="se-preview-section-delimiter"></div>
  • 可以递归删除目录下的目录及文件。
  • 与os.removedirs()不同的是,rmtree不管是否目标目录下有文件
    !!!

!!!note shutil.move(src,path)

shutil.move(r".\a1.txt",r".\de2")




<div class="se-preview-section-delimiter"></div>
  • 把当前文件移动到目标路径下
  • 对于同盘移动文件或目录,shutil.move基于复制,远不如os.rename高效。
    !!!

!!!note shutil.make_archive(base_name, format,…)

创建压缩包并返回文件路径,例如:zip、tar
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
- 如 data_bak =>保存至当前路径
- 如:/tmp/data_bak =>保存至/tmp/
- format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
“`python
shutil.make_archive(“b2_zip”,”zip”,r”.\de2”)# 是把目标目录下的文件压缩到默认的当前目录
shutil.make_archive(r”.\de1\b1_zip”,”zip”,r”.\de2”) #是把目标目录下的文件压缩到指定的路径下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值