Python(shutil)中的高级文件操作

在Python标准库的shutil模块中,已定义了许多用于对文件和目录进行hgh级操作的功能。

复制()

此功能将文件复制到相同或其他目录中的指定文件。该函数的第一个参数是现有文件的字符串表示形式。第二个参数是结果文件或目录的名称。如果是目录,则使用相同的名称来处理文件。不保留原始文件的元数据。

>>> import shutil
>>> shutil.copy("hello.py","newdir/")
'newdir/hello.py'

copy2()

此功能与功能类似,copy()不同之处在于它保留了源文件的元数据。例如,结果文件的日期修改属性将类似于原始文件。

>>> shutil.copy2('person.py', 'newdir/')
'newdir/person.py'

拷贝文件()

该函数的两个字符串参数代表文件名,这意味着原始文件将以指定的名称复制到同一目录中。

>>> shutil.copyfile('start.py', 'end.py')
'end.py'

copyfileobj()

该函数的参数是文件对象,而不是代表文件的字符串。文件对象是通过open()方法获得的。原始文件应具有读取权限,而生成的文件应具有写权限打开。

>>> f1=open('hello.py','r')
>>> f2=open('python.py','w')
>>> shutil.copyfileobj('f1', 'f2')
>>> shutil.copyfileobj(f1, f2)

移动()

此功能以递归方式将文件和目录从目录移至其他目录。

>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'

copytree()

此功能以递归方式将一个目录中的文件和子目录复制到另一目录。两个参数的名称必须为字符串。第二个参数名称的目录不应更早存在。要复制单个文件,内部使用了copy2()函数。

>>> shutil.copytree('dir1','dir2')
'dir2'

rmtree()

此功能删除指定目录中的文件和子目录。

>>> shutil.rmtree('dir2')
>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'

磁盘使用情况()

此函数检索给定目录的使用情况统计信息。

>>> shutil.disk_usage('c:\\python36\\dir1')
usage(total=245681352704, used=84932993024, free=160748359680)

哪一个()

该函数返回可执行文件的路径。

>>> shutil.which('calc')
'C:\\WINDOWS\\system32\\calc.EXE'

make_archive()

此功能在根目录中构建文件的存档(zip或tar)。

>>> root_dir='newdir'
>>> shutil.make_archive("newdirarch","zip",root_dir)
'C:\\python36\\newdirarch.zip'

get_archive_formats()

此功能提供了所有受支持的存档格式。

>>> shutil.get_archive_formats()
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]

unpack_archive()

此功能提取给定存档中的文件。第二个参数是要在其中提取文件的目录。如果未提供,则在当前目录中执行解压缩。

>>> shutil.unpack_archive('newdirarch.zip','newdir')