python教程:shutil高级文件操作

1、shutil高级文件操作模块

shutil模块提供了大量的文件的高级操作。特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作。对单个文件的操作也可参见os模块。

2、shutil模块的拷贝方法

>>> import shutil

>>> shutil.chown('test.txt',user='mysql',group='mysql') #改变文件的属主和属组

>>> shutil.copy('test.txt','test_copy.txt') #拷贝文件

>>> shutil.copy2('test.txt','test_copy2.txt') #拷贝文件并复制所有统计信息,如修改时间等。

>>> shutil.copyfile('test_ln.txt','test_copyfile.txt') #如果是链接文件,将复制新文件,不复制链接
>>> dstf = open('test_copyfileobj.txt','r+')
>>> srcf = open('test.txt','r')
>>> shutil.copyfileobj(srcf,dstf,length=2)  #按长度拷贝文件对象

>>> shutil.copymode('test.txt','test_copymode.txt')  #拷贝文件的权限到目标文件上

>>> shutil.copystat('test.txt','test_copymode.txt')  #拷贝文件的访问和修改时间,其他不受影响#shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹#shutil.rmtree(path[, ignore_errors[, onerror]])  递归的去删除文件#shutil.move(src, dst)  递归的去移动文件,它类似mv命令,其实就是重命名。

3、shutil模块的压缩与解压缩方法

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
                 dry_run=0, owner=None, group=None, logger=None)

创建压缩包并返回文件路径:

  • base_name:压缩包的文件名,也可以是压缩包的路径,只是文件名时,保存到当前目录,否则保存到指定路径
  • format:压缩包种类,‘zip’,'tar','bztar','gztar'
  • root_dir:要压缩的文件夹路径(默认当前目录)
  • owner:用户,默认当前用户
  • group:组,默认当前组
  • logger:用于记录日志,通常是logging.Logger对象
>>>import shutil
#将/root目录下的所有文件压缩到media目录下取名为www,压缩格式为tar
>>> ret = shutil.make_archive("/media/www",'tar',root_dir='/root')

#将文件已tar格式压缩到当前目录下
 ret = shutil.make_archive("ipython55",'tar',root_dir='/root/ipython-5.5.0')

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

>>> import zipfile
#压缩
>>> z = zipfile.ZipFile('xin.tar.gz','w')   #创建名为xin.tar.gz的压缩文件
>>> z.write('test.txt')   #写入文件到压缩文件中
>>> z.write('log.txt')
>>> z.close()   #关闭文件
#解压缩
>>> z = zipfile.ZipFile('xin.tar.gz','r')   #打开压缩文件
>>> z.extractall(path='/python/day7')  #解压到指定路径下
>>> z.close()

#Python学习交流QQ群:153708845
>>> import tarfile
#压缩
>>> tar = tarfile.open('/usr/targzfile.tar.gz','w')  #指定目录创建压缩文件
>>> tar.add('/python/day7/test1.py',arcname='test1.py')  #添加文件到压缩文件中
>>> tar.add('/python/day7/test1.py',arcname='test2.py')
>>> tar.close()

#解压缩
>>> tar = tarfile.open('/usr/targzfile.tar.gz','r')
>>> tar.extractall(path='/pyhton/day8')
>>> tar.close()

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python教程:shutil高级文件操作 - Python技术站

(0)
上一篇 2023年3月31日 下午9:07
下一篇 2023年3月31日 下午9:07

相关文章

  • Python教程:用__new__ 创建单例模式

    1.用 __new__方法 class Singleton(object): def __new__(cls): if not hasattr(cls,’_instance’): cls._instance=super(Singleton,cls).__new__(cls) # cls.__instance = object.__new__(cls) #这样…

    Python开发 2023年4月2日
    00
  • Python 函数递归教程

    1.什么是函数递归 函数的嵌套调用:一个函数里面又写了一个函数。 函数的递归调用:他是一种特殊的嵌套调用,他也是在函数里面调用函数,但是他在函数体内调用的函数时他自己本身。 如果递归函数不断的在函数体内调用函数自己本身,如果我们不给终止条件来结束程序运行的话,程序就会进入死循环,那这个时候程序运行将会报错,因此我们应该给递归函数一个明确的结束条件。 def …

    Python开发 2023年3月31日
    00
  • Python在不同对象中使用 in 操作符的查找效率

    前言 在Python中 in 操作符可以用于判断某个元素是否存在于当前对象中,而对于不同的Python对象,使用 in 操作符的处理效率是不一样的。 今天我们主要针对 4 种不同的Python数据类型进行学习:list列表、tuple元组、set集合、dict字典。 测试过程 我们用于测试的 4 种Python数据类型,分别为 tmp_list 、tmp_t…

    Python开发 2023年4月2日
    00
  • Python教程:类的继承,什么是继承

    一、什么是继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 二、为什么用继承 使用继承可以减少代码的冗余 三、对象的继承 Python中支持一个类同时继承多个父类 class Parent1: pass class Parent2: pass class Sub1(Parent1,…

    Python开发 2023年3月31日
    00
  • python学习:各种推导式玩法-推导式套路

    1.推导式套路 除了最简单的列表推导式和生成器表达式,其实还有字典推导式、集合推导式等等。 下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式。 variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res:  列表生成元素表达式,可以是有返回值的函…

    Python开发 2023年4月2日
    00
  • python练习题:求10万以内的质数

    1、使用质数定义计算 #version1import datetime #导入模块计算效率start = datetime.datetime.now() count = 0 for x in range(2,100000): #求指定范围内的质数 for i in range(2,x): #除以1和本身之外的数 if x % i == 0: break el…

    Python开发 2023年4月2日
    00
  • python学习:map函数和filter函数用法教程

    map()函数可以对一个数据进行同等迭代操作。 例如: def f(x): return x * x r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) print(list(r)) map函数传入的第一个参数就是函数本身,即f。第二个参数是要操作的数据 map() 作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简…

    Python开发 2023年4月2日
    00
  • Python学习:数据类型转换的方法教程

    1.type() 函数 使用 type() 函数可以查看数据类型。 示例: >>> type(123) <class ‘int’> >>> type(12.3) <class ‘float’> >>> type(“abc”) <class ‘str’> >>…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部