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
文件路径拆分为目录路径和文件名,并输出。