删除整个文件夹
既然有复制整个文件夹,那么肯定shutil库也会提供反向的操作用于删除整个文件夹。删除整个文件夹的函数为:rmtree()。
import shutil shutil.rmtree('./text_copy')
这样,我们就删除了上面复制的文件夹内容。
移动文件夹或文件
除了复制文件与文件夹之外,我们在实际的项目中,还会移动整个某个文件或某个目录到另一个位置,shutil库提供了move()函数用于移动文件或文件夹。
示例如下:
import shutil shutil.move('week.csv', './text')
这里,我们将csv文件移动到了刚才用于复制的text源文件目录。(移动文件夹一样操作,只是将文件名改为文件夹名)
查找文件
在更多的文件操作中,我们往往还需要查找某个文件。而shutil库提供了which()函数用于搜索查找目标文件。它有3个参数:mode可以设置查找文件的权限,path为需要查找的路径,cmd为要查找的文件。
示例如下:
import shutil filename = shutil.which('python') print(filename)
运行之后,效果如下:
归档
shutil库提供了更多高层函数来创建和解压归档文件。我们先来看看shutil库支持哪些格式,示例如下:
import shutil for format,desc in shutil.get_archive_formats(): print('{:<5}:{}'.format(format,desc))
运行之后,效果如下:
简单的理解就是支持的压缩格式。
压缩文件
我们先来看一个简单的例子,将某个文件夹进行压缩,代码如下:
import shutil shutil.make_archive('text','gztar',root_dir='..',base_dir='base_demo')
这里我们将text文件夹,压缩格式为gztar。运行之后,效果如下:
其中,root_dir指定要压缩的路径根目录(默认当前目录),只能指定路径,优先级低于base_dir。base_dir指定要压缩文件的路径,可以指定路径下的文件名,也可以指定路径。
解压缩
既然有压缩,肯定也就有解压缩。shutil库提供了unpack_archive()进行解压缩文件。示例如下:
import shutil shutil.unpack_archive('text.tar.gz',extract_dir='text_un')
unpack_archive()函数的第1个参数为需要解压的文件,第2个参数为需要解压到哪里。
文件系统空间
完成一个长时间运行的可能耗尽可用空间的操作之前,最好先检查本地文件系统,来看看有多少可用的空间。shutil库提供了disk_usage()函数来返回包括总空间,当前正在使用的空间以及未使用的空间。
示例如下:
import shutil (total, used, free) = shutil.disk_usage("E:/") BytesPerGB = 1024 * 1024 * 1024 print ("Total: %.2fGB" % (float(total)/BytesPerGB)) print ("Used: %.2fGB" % (float(used)/BytesPerGB)) print ("Free: %.2fGB" % (float(free)/BytesPerGB))
运行之后,效果如下:
这里博主是获取电脑E盘的信息,比如这里获取到E盘总大小total为238G,已使用Used为43G,未使用Free:194G。一个健壮的程序必然很严谨,所以在操作文件时,特别是比较大的文件时,一定要判断磁盘的大小之后再操作。