博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-shutil学习
阅读量:6480 次
发布时间:2019-06-23

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

shutil:高级的 文件、文件夹、压缩包 处理模块

1. shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容)

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

import shutilshutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

2. shutil.copyfile(src, dst)  (只拷贝文件内容)

拷贝文件

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

3. shutil.copy(src, dst)      (拷贝文件和权限)

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

4. shutil.copy2(src, dst)     (拷贝文件和状态信息)

shutil.copy2('f1.log', 'f2.log'

5. shutil.copymode(src, dst)  (前提是dst文件存在,不然报错    仅拷贝权限。内容、组、用户均不变)

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

6. shutil.copystat(src, dst)

仅拷贝状态的信息,即文件属性,包括:mode bits, atime, mtime, flags

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

 

7. shutil.ignore_patterns(*patterns)  (忽略哪个文件,有选择性的拷贝)

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

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

9. shutil.rmtree(path[, ignore_errors[, onerror]])    (递归的去删除文件)

shutil.rmtree('folder1')

10. shutil.move(src, dst)      (递归的去移动文件,它类似mv命令,其实就是重命名。)

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

11. 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对象
    #将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录  
    import shutilret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test') #将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录import shutilret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')

     

12. shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

import zipfile
# 压缩z = zipfile.ZipFile('laxi.zip', 'w')z.write('a.log')z.write('data.data')z.close()# 解压z = zipfile.ZipFile('laxi.zip', 'r')z.extractall()z.close()
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()

备注:zipfile压缩不会保留文件的状态信息,而tarfile会保留文件的状态信息

转载于:https://www.cnblogs.com/nxzblogs/p/10649471.html

你可能感兴趣的文章
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
PHP生成静态html文件 的三种方法
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>
要懂得对你的老板好一点!
查看>>
HDU5139:Formula(找规律+离线处理)
查看>>
visio如何让动态连接线的单箭头变成双箭头?
查看>>
poj 1273 Drainage Ditches 网络流最大流基础
查看>>
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>
Android intent action大全
查看>>
使用 Flash Builder 的 Apple iOS 开发过程
查看>>
Android OpenGL ES(一)OpenGL ES介绍
查看>>
RabbitMq_05_Topics
查看>>
redis.conf
查看>>
SCALA中的函数式编程
查看>>
Windows删除无效服务
查看>>