目录
复制模块shutil
复制模块shutil是Python标准库内容,更详细说明请参考官方手册(https://docs.python.org/zh-cn/3/library/shutil.html)。
复制模块shutil概述
shutil模块提供了一些文件拷贝和删除的函数,常用函数如下。
shutil.copy(src, dst):复制文件,从src路径复制到dst
shutil.copytree(src, dst):复制文件夹
shutil.move(src, dst):移动文件或文件夹
shutil.rmtree(path):删除文件夹
shutil模块还有一些方法(了解)
shutil.copy2(src, dst, *, follow_symlinks=True):复制文件,尝试保留文件元数据
shutil.copymode(src, dst, *, follow_symlinks=True):从 src 拷贝权限位到 dst
shutil.copystat(src, dst, *, follow_symlinks=True):从 src 拷贝权限位、最近访问时间、最近修改时间以及旗标到 dst
shutil模块复制文件和文件夹
文件目录结构
atestpkg
├─ myfolder
├─ fd1
└─ file111.txt
├─ fd2
└─ fd3
├─ mytools
├─ __init__.py
├─ myadd.py
└─ myappend.py
├─ myfile.txt
├─ t05.py
├─ t06.py
└─ t07.py
文件复制
import os
import shutil
print(os.getcwd()) # E:wkp01p00test01atestpkg
print(os.listdir()) # ['myfile.txt', 'myfolder', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
print(os.listdir("myfolder/fd1")) # ['file111.txt'] 复制前的文件夹内容
# 文件复制
shutil.copy("myfile.txt","myfolder/fd1")
print(os.listdir("myfolder/fd1")) # ['file111.txt', 'myfile.txt'] 复制后的文件夹内容
文件夹复制(注意同目录中文件夹不能重名)
import os
import shutil
print(os.getcwd()) # E:wkp01p00test01atestpkg
print(os.listdir()) # ['myfile.txt', 'myfolder', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
print(os.listdir("myfolder/fd2")) # [] 复制前的文件夹内容
# 文件夹复制,可同时重命名
shutil.copytree("myfolder/fd1","myfolder/fd2/fd1new")
print(os.listdir("myfolder/fd2")) # ['fd1new'] 复制后的文件夹内容
shutil模块移动文件或文件夹
移动操作时原始文件或文件夹会移动到新位置。
import os
import shutil
print(os.getcwd()) # E:wkp01p00test01atestpkg
print(os.listdir()) # ['myfile.txt', 'myfolder', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
print(os.listdir("myfolder/fd3")) # [] 移动前的文件夹内容
shutil.move("myfolder/fd1/file111.txt","myfolder/fd3") # 移动文件
shutil.move("myfolder/fd1","myfolder/fd3") # 移动文件夹
print(os.listdir("myfolder/fd3")) # ['fd1', 'file111.txt'] 移动后的文件夹内容
shutil模块删除文件夹(非空文件夹)
import os
import shutil
print(os.getcwd()) # E:wkp01p00test01atestpkg
print(os.listdir()) # ['myfile.txt', 'myfolder', 'mytools', 't05.py', 't06.py', 't07.py', '__pycache__']
print(os.listdir("myfolder")) # ['fd2', 'fd3'] 删除前的文件夹内容
shutil.rmtree("myfolder/fd3") # 删除文件夹
print(os.listdir("myfolder")) # ['fd2'] 删除后的文件夹内容