本文介绍如何使用 python
对文件/文件夹进行拷贝、删除及重命名等。
Last Modified: 2022 / 8 / 12
可行库
用于拷贝文件可行的几种第三方库
库名 | 说明 |
---|---|
os | |
shutil | 提供了几个高级函数来支持文件的复制和删除。 |
pathlib | 从 Python 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 文件替换。 |
示例
-
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复制文件的九种方法