Python复制文件

1. 概述
在实际开发中,经常需要将一个文件或文件夹复制到另一个位置。Python提供了多种方法来实现文件的复制操作。本文将详细介绍如何使用Python复制文件或文件夹,并给出相关示例代码。
2. 使用shutil模块复制文件
Python的标准库中的shutil模块提供了一组用于文件操作的函数。其中,shutil.copy(src, dst)函数可以用于将源文件src复制到目标位置dst。下面是shutil.copy()函数的使用示例:
import shutil
# 源文件路径
src_path = 'path/to/source/file.txt'
# 目标文件路径
dst_path = 'path/to/destination/file.txt'
# 复制文件
shutil.copy(src_path, dst_path)
通过上述代码,可以将path/to/source/file.txt文件复制到path/to/destination/file.txt路径下。
值得注意的是,如果目标位置已经存在同名文件,shutil.copy()函数会覆盖目标位置的文件。如果需要保留目标位置的文件,可以使用shutil.copy2()函数。
3. 使用shutil模块复制文件夹
与复制文件类似,shutil模块还提供了用于复制文件夹的函数。shutil.copytree(src, dst)函数可以将源文件夹src及其子文件夹和文件复制到目标位置dst。下面是shutil.copytree()函数的使用示例:
import shutil
# 源文件夹路径
src_dir = 'path/to/source/directory/'
# 目标文件夹路径
dst_dir = 'path/to/destination/directory/'
# 复制文件夹
shutil.copytree(src_dir, dst_dir)
通过上述代码,可以将path/to/source/directory/文件夹及其包含的所有子文件夹和文件复制到path/to/destination/directory/路径下。
同样地,如果目标位置已经存在同名文件夹,shutil.copytree()函数会覆盖目标位置的文件夹及其内容。
4. 使用os模块复制文件
除了shutil模块外,Python的标准库中的os模块也提供了文件操作的函数。其中,os.path模块提供了一组用于操作路径的函数,而os模块本身包含了os.system()函数,可以用于执行系统命令。
要复制文件,可以使用os.system()函数结合系统命令来完成操作。下面是使用os.system()函数复制文件的示例代码:
import os
# 源文件路径
src_path = 'path/to/source/file.txt'
# 目标文件路径
dst_path = 'path/to/destination/file.txt'
# 使用系统命令复制文件
os.system(f'cp {src_path} {dst_path}')
通过上述代码,可以将path/to/source/file.txt文件复制到path/to/destination/file.txt路径下。
需要注意的是,os.system()函数会调用系统的shell命令来执行操作。Linux系统上可以使用cp命令复制文件,而Windows系统上可以使用copy命令。
5. 使用os模块复制文件夹
与复制文件类似,可以使用os.system()函数结合系统命令来复制文件夹。下面是使用os.system()函数复制文件夹的示例代码:
import os
# 源文件夹路径
src_dir = 'path/to/source/directory/'
# 目标文件夹路径
dst_dir = 'path/to/destination/directory/'
# 使用系统命令复制文件夹
os.system(f'cp -r {src_dir} {dst_dir}')
通过上述代码,可以将path/to/source/directory/文件夹及其包含的所有子文件夹和文件复制到path/to/destination/directory/路径下。
同样地,需要根据操作系统的不同选择合适的系统命令来复制文件夹。
6. 使用pathlib模块复制文件
Python 3.4及以上版本引入了pathlib模块,提供了一种更加面向对象的路径操作方式。使用pathlib模块可以更加简洁地完成复制文件的操作。
from pathlib import Path
# 源文件路径
src_path = Path('path/to/source/file.txt')
# 目标文件路径
dst_path = Path('path/to/destination/file.txt')
# 复制文件
dst_path.write_bytes(src_path.read_bytes())
上述代码中,Path类用于创建路径对象。通过read_bytes()方法可以读取源文件的内容,然后通过write_bytes()方法将内容写入目标文件。
7. 使用pathlib模块复制文件夹
同样地,使用pathlib模块也可以复制文件夹。下面是使用pathlib模块复制文件夹的示例代码:
from pathlib import Path
import shutil
# 源文件夹路径
src_dir = Path('path/to/source/directory/')
# 目标文件夹路径
dst_dir = Path('path/to/destination/directory/')
# 使用shutil.copytree()函数复制文件夹
shutil.copytree(str(src_dir), str(dst_dir))
上述代码中,使用shutil.copytree()函数复制文件夹,但是需要将Path对象转换为字符串。
8. 总结
本文介绍了多种方法实现Python复制文件或文件夹的操作。其中,shutil模块提供了一组用于文件和文件夹操作的函数,通过shutil.copy()和shutil.copytree()函数可以复制文件和文件夹。另外,os模块提供了使用系统命令来复制文件和文件夹的方式,通过os.system()函数可以执行相应的操作。此外,Python 3.4及以上版本引入的pathlib模块可以更加简洁地完成复制文件和文件夹的操作。
极客笔记