一、高级文件处理接口shutil
shutil
是一种高层次的文件操作工具
类似于高级API,而且主要强大之处在于其对文件的复制与删除操作更是比较支持好。
使用方法
copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
copymode( src, dst) 只是会复制其权限其他的东西是不会被复制的
copystat( src, dst) 复制权限、最后访问时间、最后修改时间
copy( src, dst) 复制一个文件到一个文件或一个目录
copy2( src, dst) 在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
copy2( src, dst) 如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
copytree(olddir,newdir,True/Flase) 把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
[root@python ~]# mkdir /tmp/demo
[root@python ~]# cd /tmp/demo/
[root@python demo]# mkdir -p dir1
[root@python demo]# touch a.txt b.txt c.txt
[root@python demo]# touch sh.py cc.py 001.jpg 002.jpg 003.jpg
//创建所需文件
[root@python demo]# ipython
//打开ipython
也可以在PyCharm中创建文件,进行实施。
1、复制文件和文件夹
shutil.copy(file1,file2) #文件
shutil.copytree(dir1,dir2) #文件夹
(1)复制文件
In [1]: import shutil
In [2]: shutil.copy('a.txt','aa.txt')
Out[2]: 'aa.txt'
//可在PyCharm和Linux的相应路径查看是否有生成的文件
In [3]: ls
001.jpg 003.jpg a.txt cc.py sh.py
002.jpg aa.txt b.txt c.txt
(2)复制文件夹
In [5]: shutil.copytree('dir1','dir11')
Out[5]: 'dir11'
In [6]: ls
001.jpg 003.jpg a.txt cc.py dir1/ sh.py
002.jpg aa.txt b.txt c.txt dir11/
(3)将文件内容拷贝到另一个文件中
# _*_ coding:utf-8 _*_
__author__ = 'junxi'
import shutil
# 将文件内容拷贝到另一个文件中
shutil.copyfileobj(open('old.txt', 'r'), open('new.txt', 'w'))
# 拷贝文件
shutil.copyfile('old.txt', 'old1.txt')
# 仅拷贝权限。内容、组、用户均不变
shutil.copymode('old.txt', 'old1.txt')
# 复制权限、最后访问时间、最后修改时间
shutil.copystat('old.txt', 'old1.txt')
# 复制一个文件到一个文件或一个目录
shutil.copy('old.txt', 'old2.txt')
# 在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了
shutil.copy2('old.txt', 'old2.txt')
# 把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
shutil.copytree('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb')
# 移动目录或文件
shutil.move('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb') # 把aaa目录移动到bbb目录下
# 删除一个目录
shutil.rmtree('C:/Users/xiaoxinsoso/Desktop/bbb') # 删除bbb目录
2、文件和文件夹的重命名与移动
shutil.move(filel, file2)
shutil.move(file, dir)
(1)文件的重命名
In [7]: shutil.move('aa.txt','dd.txt')
Out[7]: 'dd.txt'
In [8]: ls
00