目录
前言
什么算是高层的文件操作呢?
普通的文件操作,我们一般只涉及创建文件,文件夹以及写入文件等等。假如我现在需要复制一个文件的内容到另一个文件之中,用pathlib等都只能先打开复制文件,然后进行将其读出来保存,然后再写入新的文件,这种普通的复制操作,无形之中增加了许多步骤。
而shutil库可以直接完成复制符间的操作,同时还支持归档。本篇,将详细介绍文件的高层次操作。
copyfile()
copyfile()函数用于将一个文件的内容复制到另一个文件之中,准备的来说,它不是copy内容,而是直接copy文件,并重命名。
示例如下:
import shutil
shutil.copyfile('week.csv', 'week_copy.csv')
很简单,就一行代码,第1个参数是需要copy的源文件,第2个参数是需要复制的新文件。运行之后,效果如下:
copy()与copy2()
不过,copyfile()函数用于复制文件有一个缺陷,该函数的原理是通过打开源文件进行读取。所以,如果是某些特殊的文件,比如是UNIX设备节点,没有权限会报IOERROR错误。
还需要注意的是,通过copyfile()函数复制的文件是一个新文件,它不包括旧文件的访问时间与修改时间。
而copy2()函数可以复制文件后保留访问时间,修改时间。示例如下:
import shutil
import os
import time
shutil.copy2('week.csv', 'week_copy.csv')
stat_info1 = os.stat('week.csv')
stat_info2 = os.stat('week_copy.csv')
print("源文件信息")
print(oct(stat_info1.st_mode))
print('文件创建时间:{}'.format(time.ctime(stat_info1.st_ctime)))
print('文件访问时间:{}'.format(time.ctime(stat_info1.st_atime)))
print('文件修改时间:{}'.format(time.ctime(stat_info1.st_mtime)))
print("复制文件信息")
print(oct(stat_info2.st_mode))
print('文件创建时间:{}'.format(time.ctime(stat_info2.st_ctime)))
print('文件访问时间:{}'.format(time<