文件File的复制
复制
复制需要导入shutil库
import shutil
src ---> source 源文件缩写
dst ---> destination 目的地缩写
1、copy()
语法:shutil.copy(src, dst)
功能:复制文件,如果当前路径中已存在同名称文件,则直接覆盖掉
返回值:复制后新文件的路径dst
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new.txt' 5 path = shutil.copy(file_path, new_path) 6 print(path) 7 --->C:\Users\hasee\Desktop\new.txt
可以看到新文件new.txt文件的时间属性是全新的
2、copy2()
语法:shutil.copy2(src, dst)
功能:复制文件,但是会保留原数据,例如原文件的时间等信息
如果当前路径中已存在同名称文件,则直接覆盖掉
返回值:复制后新文件的路径dst
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new1.txt' 5 path = shutil.copy2(file_path, new_path) 6 print(path) 7 --->C:\Users\hasee\Desktop\new1.txt
可以和copy()方法的截图看到 修改时间没有改变
3、copyfileobj()
语法:shutil.copyfileobj(fsrc, fdst)
参数其实就是两个文件的指针 open(file_path, mode)
其中 fsrc 的 mode 为 r
fdst 的 mode 为 w 或 a
功能:复制源文件中的内容到目标文件中
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new.txt' 5 shutil.copyfileobj(open(file_path, 'r'), open(new_path, 'w'))
4、copyfile()
语法:shutil.copyfile(src, dst)
功能:复制源文件中的内容到目标文件中,默认源文件为读取r状态,目标文件为写入w状态
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new.txt' 5 shutil.copyfile(file_path, new_path)
5、copytree()
语法:shutil.copytree(src, dst)
功能:复制整个目录或文件夹,如果当前路径中已经存在目录,则会报错
返回值:dst
1 import shutil 2 3 dir_path = r'C:\Users\hasee\Desktop\test_code' 4 new_path = r'C:\Users\hasee\Desktop\new' 5 shutil.copytree(dir_path, new_path)
6、copymode()
语法:shutil.copymode(src, dst)
功能:复制源文件的所有权限,但是其他不复制
1 import shutil 2 # 在例子中,我设置了test.txt为只读,通过复制,new.txt也变成了只读 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new.txt' 5 shutil.copymode(file_path, new_path)
7、copystat()
语法:shutil.copystat(src, dst)
功能:复制原数据(状态) 例如访问修改等时间信息
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\test_code\test.txt' 4 new_path = r'C:\Users\hasee\Desktop\new.txt' 5 shutil.copystat(file_path, new_path)
8、rmtree()
语法:shutil.rmtree(path)
功能:移除整个目录,不管是否为空
1 import shutil 2 3 new_path = r'C:\Users\hasee\Desktop\new' 4 shutil.rmtree(new_path)
移除的目录不经过回收站,彻底删除
9、move()
语法:shutil.move(src, dst)
功能:剪切操作,文件or目录
返回值:新的path
1 import shutil 2 3 file_path = r'C:\Users\hasee\Desktop\新建文本文档.txt' 4 new_path = r'C:\Users\hasee\Desktop\new\new_file.txt' 5 shutil.move(file_path, new_path)
10、which()
语法:shutil.which(cmd)
cmd ---> command 命令提示符
功能:检测命令对应的文件路径
1 import shutil 2 3 path = shutil.which('ipconfig') 4 print(path) 5 --->C:\Windows\system32\ipconfig.EXE
在Windows中,命令文件以.exe结尾,Linux中则不是
11、disk_usage()
语法:shutil.disk_usage(path)
Windows中,path为盘符;Linux中,path = ' / '
功能:查看磁盘使用量,单位:字节
1 import shutil 2 3 cap = shutil.disk_usage('C:') 4 print(cap) 5 --->usage(total=106848841728, used=46785527808, free=60063313920)