博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Python3之shutil模块
阅读量:5132 次
发布时间:2019-06-13

本文共 2470 字,大约阅读时间需要 8 分钟。

原文:https://www.cnblogs.com/wang-yc/p/5625046.html

一. 简介

  shutil 是高级的文件,文件夹,压缩包处理模块。

 

二. 使用

shutil.copyfileobj(fsrc, fdst[, length])

将文件内容拷贝到另一个文件中

1
2
3
import 
shutil
  
shutil.copyfileobj(
open
(
'old.xml'
,
'r'
), 
open
(
'new.xml'
'w'
))

shutil.copyfile(src, dst)

拷贝文件

1
shutil.copyfile(
'f1.log'
'f2.log'
)

shutil.copymode(src, dst)

仅拷贝权限。内容、组、用户均不变

1
shutil.copymode(
'f1.log'
'f2.log'
)

shutil.copystat(src, dst)

仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

1
shutil.copystat(
'f1.log'
'f2.log'
)

shutil.copy(src, dst)

拷贝文件和权限

1
shutil.copy(
'f1.log'
'f2.log'
)

shutil.copy2(src, dst)

拷贝文件和状态信息

1
shutil.copy2(
'f1.log'
'f2.log'
)

shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹

1
2
3
shutil.copytree(
'folder1'
'folder2'
, ignore
=
shutil.ignore_patterns(
'*.pyc'
'tmp*'
))
 
shutil.copytree(
'f1'
'f2'
, symlinks
=
True
, ignore
=
shutil.ignore_patterns(
'*.pyc'
'tmp*'
))

shutil.rmtree(path[, ignore_errors[, onerror]])

递归的去删除文件

1
shutil.rmtree(
'folder1'
)

shutil.move(src, dst)

递归的去移动文件,它类似mv命令,其实就是重命名。

1
shutil.move(
'folder1'
'folder3'
)

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    如:www                        =>保存至当前路径
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要压缩的文件夹路径(默认当前目录)
  • owner: 用户,默认当前用户
  • group: 组,默认当前组
  • logger: 用于记录日志,通常是logging.Logger对象
1
2
3
4
5
6
7
8
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录
import 
shutil
ret 
= 
shutil.make_archive(
"wwwwwwwwww"
'gztar'
, root_dir
=
'/Users/wupeiqi/Downloads/test'
)
   
   
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
import 
shutil
ret 
= 
shutil.make_archive(
"/Users/wupeiqi/wwwwwwwwww"
'gztar'
, root_dir
=
'/Users/wupeiqi/Downloads/test'
)

  

shutil 对压缩包的处理是通过调用ZipFile 和 TarFile两个模块来进行的。

1
2
3
4
5
6
7
8
9
10
11
12
import 
zipfile
 
# 压缩
= 
zipfile.ZipFile(
'laxi.zip'
'w'
)
z.write(
'a.log'
)
z.write(
'data.data'
)
z.close()
 
# 解压
= 
zipfile.ZipFile(
'laxi.zip'
'r'
)
z.extractall()
z.close()
1
2
3
4
5
6
7
8
9
10
11
12
import 
tarfile
 
# 压缩
tar 
= 
tarfile.
open
(
'your.tar'
,
'w'
)
tar.add(
'/Users/wupeiqi/PycharmProjects/bbs2.log'
, arcname
=
'bbs2.log'
)
tar.add(
'/Users/wupeiqi/PycharmProjects/cmdb.log'
, arcname
=
'cmdb.log'
)
tar.close()
 
# 解压
tar 
= 
tarfile.
open
(
'your.tar'
,
'r'
)
tar.extractall()  
# 可设置解压地址
tar.close()

转载于:https://www.cnblogs.com/liujiacai/p/9882874.html

你可能感兴趣的文章
springboot No Identifier specified for entity的解决办法
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Android-多线程AsyncTask
查看>>
LeetCode【709. 转换成小写字母】
查看>>