Python基础教程

007_复制模块shutil

复制模块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']  删除后的文件夹内容
这篇文章对您有用吗?

我们要如何帮助您?