Python 文件复制移动

在日常开发中,文件的复制和移动是非常常见的操作。Python 提供了多种方法来实现文件的复制和移动,本文将详细介绍这些方法,并提供示例代码来演示如何使用这些方法。
1. 使用 shutil 模块进行文件复制
shutil 模块是 Python 标准库中用于文件操作的模块,其中包含了文件复制和移动的方法。下面是一个简单的示例代码,演示如何使用 shutil.copy 方法来复制文件:
import shutil
# 源文件路径
source_file = 'source.txt'
# 目标文件路径
target_file = 'target.txt'
# 复制文件
shutil.copy(source_file, target_file)
print('文件复制成功')
运行以上代码,会将 source.txt 文件复制到 target.txt 文件中,并输出 文件复制成功。
2. 使用 os 模块进行文件移动
除了 shutil 模块外,Python 的 os 模块也提供了文件操作的方法。下面是一个示例代码,演示如何使用 os.rename 方法来移动文件:
import os
# 源文件路径
source_file = 'source.txt'
# 目标文件路径
target_file = 'target.txt'
# 移动文件
os.rename(source_file, target_file)
print('文件移动成功')
运行以上代码,会将 source.txt 文件移动到 target.txt 文件中,并输出 文件移动成功。
3. 使用 pathlib 模块进行文件复制和移动
pathlib 模块是 Python 3.4 引入的新模块,提供了更加简洁和易用的文件路径操作方法。下面是一个示例代码,演示如何使用 pathlib.Path 对象的 rename 方法来移动文件:
from pathlib import Path
# 源文件路径
source_file = Path('source.txt')
# 目标文件路径
target_file = Path('target.txt')
# 移动文件
source_file.rename(target_file)
print('文件移动成功')
运行以上代码,会将 source.txt 文件移动到 target.txt 文件中,并输出 文件移动成功。
4. 使用 shutil 模块进行文件夹复制
除了文件复制和移动外,有时候我们也需要复制整个文件夹。shutil 模块提供了 shutil.copytree 方法来实现文件夹的复制。下面是一个示例代码,演示如何使用 shutil.copytree 方法来复制文件夹:
import shutil
# 源文件夹路径
source_dir = 'source_dir'
# 目标文件夹路径
target_dir = 'target_dir'
# 复制文件夹
shutil.copytree(source_dir, target_dir)
print('文件夹复制成功')
运行以上代码,会将 source_dir 文件夹及其所有内容复制到 target_dir 文件夹中,并输出 文件夹复制成功。
5. 使用 shutil 模块进行文件夹移动
类似地,shutil 模块也提供了 shutil.move 方法来移动文件夹。下面是一个示例代码,演示如何使用 shutil.move 方法来移动文件夹:
import shutil
# 源文件夹路径
source_dir = 'source_dir'
# 目标文件夹路径
target_dir = 'target_dir'
# 移动文件夹
shutil.move(source_dir, target_dir)
print('文件夹移动成功')
运行以上代码,会将 source_dir 文件夹及其所有内容移动到 target_dir 文件夹中,并输出 文件夹移动成功。
6. 使用 os 模块进行文件夹删除
在文件操作中,删除文件夹也是一个常见的操作。os 模块提供了 os.rmdir 方法来删除空文件夹,shutil 模块提供了 shutil.rmtree 方法来删除非空文件夹。下面是一个示例代码,演示如何使用 shutil.rmtree 方法来删除文件夹:
import shutil
# 待删除文件夹路径
dir_to_delete = 'dir_to_delete'
# 删除文件夹
shutil.rmtree(dir_to_delete)
print('文件夹删除成功')
运行以上代码,会删除 dir_to_delete 文件夹及其所有内容,并输出 文件夹删除成功。
7. 使用 pathlib 模块进行文件夹操作
pathlib 模块也提供了一些方法来进行文件夹操作。下面是一个示例代码,演示如何使用 pathlib.Path 对象的 mkdir 方法来创建文件夹:
from pathlib import Path
# 待创建文件夹路径
dir_to_create = Path('dir_to_create')
# 创建文件夹
dir_to_create.mkdir()
print('文件夹创建成功')
代码运行结果:

运行以上代码,会创建一个名为 dir_to_create 的文件夹,并输出 文件夹创建成功。
8. 使用 os 模块进行文件重命名
除了移动文件外,有时候我们也需要对文件进行重命名。os 模块提供了 os.rename 方法来实现文件的重命名。下面是一个示例代码,演示如何使用 os.rename 方法来重命名文件:
import os
# 待重命名文件路径
file_to_rename = 'file_to_rename.txt'
# 新文件名
new_file_name = 'renamed_file.txt'
# 重命名文件
os.rename(file_to_rename, new_file_name)
print('文件重命名成功')
运行以上代码,会将 file_to_rename.txt 文件重命名为 renamed_file.txt,并输出 文件重命名成功。
9. 使用 shutil 模块进行文件压缩
在文件操作中,有时候我们需要对文件进行压缩。shutil 模块提供了 shutil.make_archive 方法来实现文件的压缩。下面是一个示例代码,演示如何使用 shutil.make_archive 方法来压缩文件:
import shutil
# 待压缩文件路径
file_to_compress = 'file_to_compress.txt'
# 压缩文件名
compressed_file = 'compressed_file.zip'
# 压缩文件
shutil.make_archive(compressed_file, 'zip', '.', file_to_compress)
print('文件压缩成功')
运行以上代码,会将 file_to_compress.txt 文件压缩为 compressed_file.zip,并输出 文件压缩成功。
10. 使用 zipfile 模块进行文件解压缩
与文件压缩相对应的是文件解压缩。Python 的 zipfile 模块提供了一些方法来进行文件的解压缩。下面是一个示例代码,演示如何使用 zipfile.ZipFile 对象的 extractall 方法来解压缩文件:
import zipfile
# 压缩文件路径
compressed_file = 'compressed_file.zip'
# 解压缩目标文件夹路径
extract_dir = 'extracted_files'
# 解压缩文件
with zipfile.ZipFile(compressed_file, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
print('文件解压缩成功')
运行以上代码,会将 compressed_file.zip 文件解压缩到 extracted_files 文件夹中,并输出 文件解压缩成功。
11. 使用 os 模块进行文件权限修改
在文件操作中,有时候我们需要修改文件的权限。os 模块提供了 os.chmod 方法来修改文件的权限。下面是一个示例代码,演示如何使用 os.chmod 方法来修改文件的权限:
import os
# 待修改权限的文件路径
file_to_change_permission = 'file_to_change_permission.txt'
# 新权限
new_permission = 0o777
# 修改文件权限
os.chmod(file_to_change_permission, new_permission)
print('文件权限修改成功')
运行以上代码,会将 file_to_change_permission.txt 文件的权限修改为 777,并输出 文件权限修改成功。
12. 使用 os 模块进行文件大小获取
有时候我们需要获取文件的大小信息。os 模块提供了 os.path.getsize 方法来获取文件的大小。下面是一个示例代码,演示如何使用 os.path.getsize 方法来获取文件的大小:
import os
# 待获取大小的文件路径
file_to_get_size = 'file_to_get_size.txt'
# 获取文件大小
file_size = os.path.getsize(file_to_get_size)
print(f'文件大小为: {file_size} 字节')
运行以上代码,会输出 file_to_get_size.txt 文件的大小,单位为字节。
13. 使用 os 模块进行文件路径操作
os 模块提供了一些方法来进行文件路径的操作。下面是一个示例代码,演示如何使用 os.path.join 方法来拼接文件路径:
import os
# 文件夹路径
dir_path = 'path/to/dir'
# 文件名
file_name = 'file.txt'
# 拼接文件路径
file_path = os.path.join(dir_path, file_name)
print(f'文件路径为: {file_path}')
代码运行结果:

运行以上代码,会输出拼接后的文件路径。
14. 使用 os 模块进行文件存在性判断
在进行文件操作时,有时候我们需要判断文件是否存在。os 模块提供了 os.path.exists 方法来判断文件是否存在。下面是一个示例代码,演示如何使用 os.path.exists 方法来判断文件是否存在:
import os
# 待判断存在性的文件路径
file_to_check = 'file_to_check.txt'
# 判断文件是否存在
if os.path.exists(file_to_check):
print('文件存在')
else:
print('文件不存在')
代码运行结果:

运行以上代码,会输出文件是否存在的信息。
15. 使用 os 模块进行文件类型判断
除了判断文件是否存在外,有时候我们也需要判断文件的类型。os 模块提供了 os.path.isfile 和 os.path.isdir 方法来判断文件和文件夹。下面是一个示例代码,演示如何使用这两个方法来判断文件类型:
import os
# 文件路径
file_path = 'file_to_check.txt'
# 文件夹路径
dir_path = 'dir_to_check'
# 判断文件类型
if os.path.isfile(file_path):
print('这是一个文件')
else:
print('这不是一个文件')
if os.path.isdir(dir_path):
print('这是一个文件夹')
else:
print('这不是一个文件夹')
代码运行结果:

运行以上代码,会输出文件和文件夹的类型信息。
16. 使用 os 模块进行文件时间戳获取
在文件操作中,有时候我们需要获取文件的创建时间、修改时间等时间戳信息。os 模块提供了 os.path.getctime 和 os.path.getmtime 方法来获取文件的创建时间和修改时间。下面是一个示例代码,演示如何使用这两个方法来获取文件时间戳:
import os
import time
# 文件路径
file_path = 'file_to_check.txt'
# 获取文件创建时间
create_time = os.path.getctime(file_path)
print(f'文件创建时间: {time.ctime(create_time)}')
# 获取文件修改时间
modify_time = os.path.getmtime(file_path)
print(f'文件修改时间: {time.ctime(modify_time)}')
运行以上代码,会输出文件的创建时间和修改时间。
17. 使用 os 模块进行文件遍历
有时候我们需要遍历文件夹中的所有文件和子文件夹。os 模块提供了 os.walk 方法来实现文件夹的遍历。下面是一个示例代码,演示如何使用 os.walk 方法来遍历文件夹:
import os
# 文件夹路径
dir_to_walk = 'dir_to_walk'
# 遍历文件夹
for root, dirs, files in os.walk(dir_to_walk):
print(f'当前目录: {root}')
print(f'子目录: {dirs}')
print(f'文件: {files}')
运行以上代码,会遍历 dir_to_walk 文件夹中的所有文件和子文件夹。
18. 使用 os 模块进行文件读写操作
在文件操作中,读写文件是非常常见的操作。os 模块提供了 open 方法来打开文件,并提供了 read 和 write 方法来进行文件的读写操作。下面是一个示例代码,演示如何使用这些方法来进行文件读写操作:
import os
# 文件路径
file_path = 'file_to_read_write.txt'
# 写入文件
with open(file_path, 'w') as file:
file.write('Hello, deepinout.com!')
# 读取文件
with open(file_path, 'r') as file:
content = file.read()
print(content)
代码运行结果:

运行以上代码,会将 Hello, deepinout.com! 写入到文件中,并读取文件内容并输出。
19. 使用 os 模块进行文件扩展名获取
有时候我们需要获取文件的扩展名。os 模块提供了 os.path.splitext 方法来获取文件的扩展名。下面是一个示例代码,演示如何使用 os.path.splitext 方法来获取文件的扩展名:
import os
# 文件路径
file_path = 'file_to_get_extension.txt'
# 获取文件扩展名
file_extension = os.path.splitext(file_path)[1]
print(f'文件扩展名为: {file_extension}')
代码运行结果:

运行以上代码,会输出 file_to_get_extension.txt 文件的扩展名。
20. 使用 os 模块进行文件路径拆分
有时候我们需要将文件路径拆分为目录路径和文件名。os 模块提供了 os.path.split 方法来实现文件路径的拆分。下面是一个示例代码,演示
import os
# 文件路径
file_path = 'path/to/file.txt'
# 拆分文件路径
dir_path, file_name = os.path.split(file_path)
print(f'目录路径为: {dir_path}')
print(f'文件名为: {file_name}')
代码运行结果:

运行以上代码,会将 file_path 文件路径拆分为目录路径和文件名,并输出。
极客笔记