python shutil模块处理文件

一、简介

      使用Python语言处理文件,一般我们会想到执行shell命令,但是执行shell有很多的问题,小编后来发现shutil是个好东西,shutil是高层次的文件操作,类似于高级API,其强大之处在于对文件的复制、备份、压缩包等

二、使用

    shutil.copyfileobj(src, dst[, length])

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

import shutil
shutil.copyfileobj(open('/home/work/1.txt', 'r'), open('/home/work/2.txt', 'w'))

   

    shutil.copyfile(src, dst)

    copy文件

import shutil
shutil.copyfile('/home/work/file1', '/home/work/file2')

   

    shutil.copymode(src, dst)

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

import shutil
shutil.copymode('test1.log', 'test2.log')

    

    shutil.copy(src, dst)

    拷贝一个文件到一个文件或一个目录

import shutil
shutil.copy('test1.log', 'test2.log')

    

    shutil.copy2(src, dst)

    在copy上的基础上再复制文件(最后访问时间、修改时间)也复制过来了

import shutil
shutil.copy2('/home/work/test1.log', '/home/work/test2.log')

    shutil.ignore_patterns(*patterns)

    为copytree的辅助函数,提供glob功能

    shutil.copytree(src, dst, symlinks=False, ignore=None)

    递归的去拷贝文件夹, 如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,

     如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接

import shutil
shutil.copytree('/home/work/test1.log', '/home/work/test2.log', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

    

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

    递归的去删除文件

import shutil
shutil.rmtree('/home/work/test.log')

    shutil.move(src, dst)

    递归的移动文件

import shutil
shutil.move("/home/work/test1","/home/work/test2")  

   

    shutil.make_archive(base_name, format[, root_dir,...])

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

     base_name:文件名

     format: 压缩包种类,'zip', 'tar', 'bztar','gztar'

     root_dir: 压缩的根目录 

import shutil
ret = shutil.make_archive("test", 'gztar', root_dir='/home/work/dsc/test')

     

           

猜你喜欢

转载自jy-damon.iteye.com/blog/2356347
今日推荐