需求:将指定的文件从指定目录移动到用户指定的目标目录。
shutil 是 Python 标准库中的一个模块,它提供了许多文件和文件集合的高级操作。基本上,它可以帮助我们执行文件操作,例如复制、移动、更名和删除。它旨在与 os 模块一起使用,以提供更易于使用的接口。
import os
import shutil# 定义要移动的文件列表
FILES = ["abs.c","mod.c","union-struct.c","neg.c","imod.c","add.c","cmp.c"
]# 使用列表推导式替换 .c 为 .s
FILES = [filename.replace('.c', '.s') for filename in FILES]print(FILES)
print("------------------")# 询问用户源目录和目标目录
source_dir = input("请输入源目录的路径: ")
target_dir = input("请输入目标目录的路径: ")# 检查源目录和目标目录是否存在
if not os.path.exists(source_dir):print("源目录不存在!")
elif not os.path.exists(target_dir):print("目标目录不存在!")
else:for file in FILES:source_path = os.path.join(source_dir, file)target_path = os.path.join(target_dir, file)# 检查文件是否存在于源目录if os.path.exists(source_path):# 使用 shutil.move 来移动文件shutil.move(source_path, target_path)print(f"已移动 {file} 到 {target_dir}")else:print(f"文件 {file} 在源目录 {source_dir} 中不存在!")print("所有文件都已处理完毕.")
shutil.move()
是直接移动文件或目录到指定的位置。这意味着原始文件或目录将不再存在于其原始位置,而是存在于新的位置。
具体来说,shutil.move()
的工作原理是:
- 如果目标位置在同一文件系统上,它实际上是对原始文件或目录进行重命名。
- 如果目标位置在不同的文件系统上,它首先会复制原始文件或目录到目标位置,然后删除原始位置上的文件或目录。
因此,可以认为它是一个“移动”操作,而不仅仅是“拷贝”操作。
要在Python中实现文件或目录的拷贝,可以使用 shutil
模块中的 copy()
和 copytree()
函数。
-
拷贝文件:
使用shutil.copy(src, dst)
。这将从src
(源文件)拷贝到dst
(目标位置)。示例:
import shutilshutil.copy("source_file.txt", "destination_folder/")
注意:如果
dst
是一个目录,那么源文件将会被拷贝到这个目录下,并保持原始的文件名。 -
拷贝目录:
使用shutil.copytree(src, dst)
。这将从src
(源目录)拷贝到dst
(目标位置)。目标目录dst
不应该已经存在。示例:
import shutilshutil.copytree("source_folder/", "destination_folder/")
以上就是在Python中拷贝文件和目录的基本方法。