Python | 文件/文件夹的拷贝、删除及重命名等

本文介绍如何使用 python 对文件/文件夹进行拷贝、删除及重命名等。

Last Modified: 2022 / 8 / 12



可行库

用于拷贝文件可行的几种第三方库

库名说明
os
shutil提供了几个高级函数来支持文件的复制和删除。
pathlibPython 3.4 开始,您可以使用 pathlib 模块,它提供表示面向对象的文件系统路径的类。

它有 Path.write_bytes() 函数,它以字节模式打开指向的文件,向其中写入数据,然后关闭文件。此处不会发生文件元数据的交换。

如果文件已存在于目标位置,这将覆盖该文件。

拷贝

open

示例

实例可参考此处 1

src = 'A.py'
dst = 'B.py'

with open(src, 'r') as f:
    data = f.read()

with open(dst, 'w') as f:
    f.write(data)

# 可以以阅读模式 (`r`)打开源文件并将其内容以写入模式(`w`)打开的目标文件。
# 写入模式在截断文件后打开文件进行写入,如果文件不存在则创建一个。

os

方法含义
os.system('copy A B')A 文件另存为 B 文件

示例

实例可参考此处 2

  • os.system('copy A B')
os.system('cp A.py Folder/B.py')
# 将当前路径下的 A.py 拷贝至Folder下另存为 B.py

shutil

方法

方法含义
copy2如果 dst 是一个文件名,src 内容和文件元数据被复制;
如果 dst 是现有文件,它将被 src 文件替换。
如果 dst 指定一个目录,我们将复制 src 文件到目录 dst。如果目标位置中已存在同名文件,它将被覆盖。

copy2 可以接受目标目录路径并复制文件元数据。
copy()copy2 功能等同,但其无法保留元数据。
copyfile如果 dst 是一个文件名,src 内容会被复制但元数据则不会被复制。
如果 dst 是现有文件,它将被 src 文件替换。

示例

实例可参考此处 21

  • shutil.copy2(src, dst, *, follow_symlinks=True)
src = 'A.py'
dst = 'Folder'
# dst = 'Folder/B.py'
shutil.copy2(src=src, dst=dst)
# 将当前路径下的 A.py 拷贝到Folder或Folder下另存为 B.py
  • shutil.copyfile(src, dst, *, follow_symlinks=True)
src = 'A.py'
dst = 'Folder/B.py'
shutil.copyfile(src=src, dst=dst)
# 将当前路径下的 A.py 拷贝到Folder下另存为 B.py, 不复制元数据。
# 但是,如果它已经存在,它会覆盖目标文件。

pathlib

方法

方法含义
write_bytes

示例

实例可参考此处 1

  • write_bytes()
src = pathlib.Path('A.py')
dst = pathlib.Path('Folder/B.py')
dst.write_bytes(src.read_bytes())


删除

一般删除文件时使用 os 库,然后利用 os.remove(path) 即可完成删除,如果删除空文件夹则可使用 os.removedirs(path) 即可, 但是如果需要删除整个文件夹,且文件夹非空时使用 os.removedirs(path) 就会报错了。


os

方法含义
os.remove(path)删除文件
os.removedirs(path)删除空文件夹
os.rmdir(path)删除空文件夹

shutil

方法含义
shutil.rmtree(path)递归删除文件夹,即:删除非空文件夹

示例

shutil.rmtree('/home/Desktop/Folder')
# 将 /home/Desktop/Folder 及其下面的所有文件递归删除


参考链接

%todo:
用Python复制文件的九种方法


  1. 在 Python 中复制文件 ↩︎ ↩︎ ↩︎

  2. Python中复制文件的两种简单方式 ↩︎ ↩︎

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值