Python——shutil模块

        os模块不仅提供了新建文件、删除文件、查看文件属性的操作功能,还提供了对文件路径的操作功能。但是,对于移动、复制、打包、压缩、解压文件及文件夹等操作,os模块没有提供相关的函数,此时需要用到shutil模块。shutil模块是对os模块中文件操作的补充,是Python自带的关于文件、文件夹、压缩文件的高层次的操作工具,类似于高级API。

1.移动文件或文件夹

       使用shutil.move函数可以将指定的文件或文件夹移动到目标路径下,返回值是移动后的文件绝对路径字符串。

>>> importshutil

>>>shutil.move('C:\\Users\\45543\\Desktop\\程序\\pi_digits.txt', 'C:\\Users\\45543\\Desktop')

'C:\\Users\\45543\\Desktop\\pi_digits.txt'

       如果目标路径指向的文件夹中已经存在了同名文件,那么该文件将被重写;如果目标路径指向一个具体的文件,那么指定的文件在移动后将被重命名。

>>> importshutil

>>>shutil.move('C:\\Users\\45543\\Desktop\\pi_digits.txt','C:\\Users\\45543\\ MyText.txt')

'C:\\Users\\45543\\MyText.txt'

注意:目标路径下的文件夹必须是已经存在的,否则程序会返回错误。

2.复制文件

       shutil.copyfile(src,dst)可以从src文件复制内容(不包含元数据)到dst文件。dst必须是完整的目标文件名。返回值是复制后的文件绝对路径字符串。

>>> importshutil

>>>shutil.copyfile('Ch7.py', 'Ch7.py.copy')

'Ch7.py.copy'

       如果src和dst是同一文件,就会引发错误shutil.Error。dst文件必须是可写的,否则将引发异常IOError。如果dst文件已经存在,则它会被替换。对于特殊文件,例如字符或块设备文件和管道不能使用此功能,因为copyfile会打开并读取文件。

       shutil.copy(src,dst)可以复制文件src到文件或目录dst。如果dst是目录,则会使用src相同的文件名创建(或覆盖),文件权限也会复制,返回值是复制后的文件绝对路径字符串。

>>> import shutil

>>>shutil.copy('C:\\Users\\45543\\Desktop\\pi_digits.txt', 'C:\\Users\\45543\\MyFile.txt')

'C:\\Users\\45543 \\MyFile.txt'

       shutil模块还提供了shutil.copytree函数用于进行目录的复制。

>>> import shutil

>>>shutil.copytree('C:\\Users\\45543\\Desktop\\程序','C:\\Users\\45543\\test')

'C:\\Users\\45543\\test'

注意:test文件夹必须事先不存在。

3.永久删除文件和文件夹

       使用os.unlink函数会删除指定的文件;使用os.rmdir函数会删除路径指定的文件夹,但是这个文件夹必须是空的,不能包含任何文件或子文件夹;使用shutil.rmtree函数可以删除路径指定的文件夹,并且这个文件夹里面的所有文件和子文件夹都会被删除。

       因为涉及对文件与文件夹的永久删除,因此以上函数的使用必须要非常谨慎。

>>> import shutil

>>>import os

>>>os.unlink('C:\\Users\\45543\\Desktop\\Delect')

Traceback (most recent call last):

  File"", line 1, in

   os.unlink('C:\\Users\\45543\\Desktop\\Delect')

PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\45543\\Desktop\\Delect'

>>>os.rmdir('C:\\Users\\45543\\Desktop\\Delect')

Traceback (most recent call last):

  File"", line 1, in

   os.rmdir('C:\\Users\\45543\\Desktop\\Delect')

OSError: [WinError 145] 目录不是空的。: 'C:\\Users\\45543\\Desktop\\Delect'

>>>shutil.rmtree('C:\\Users\\45543\\Desktop\\Delect')

4.压缩与解压文件

      Python 2.7版本之后就提供了使用shutil模块实现文件压缩与解压的功能。shutil.make_archive函数的相关参数设置如下表所示。

                                                                 shutil.make_archive函数的相关参数

参    数

说    明

base_name

压缩包的文件名,也可以是压缩包的路径,是文件名时,则保存至当前目录,否则保存至指定路径

format

压缩包种类,可以是zip、tar、bztar、gztar

root_dir

要压缩的文件夹路径(默认当前目录)

owner

用户,默认当前用户

group

组,默认当前组

logger

用于记录日志,通常是logging.Logger对象

       shutil.make_archive函数将test.zip压缩包中的文件解压到了指定路径(C:\\Users\\45543\\Desktop)下的test文件夹里。对压缩文件进行解压处理,需要用到shutil.unpack_archive函数。

>>> import shutil

>>>shutil.make_archive("C:\\Users\\45543\\Desktop\\test", 'zip',root_dir= 'C:\\Users\\45543\\Desktop\\程序')

>>>shutil.unpack_archive('C:\\Users\\45543\\Desktop\\test.zip', 'C:\\Users\\ 45543\\Desktop\\test')

 

文章未经博主同意,禁止转载!

 

你可能感兴趣的:(Python模块)