如何编写一个Python脚本,从包含图片和对应txt文件的两个不同文件夹中随机选择指定数量(n)的图片及相应的文本文件,然后将它们分别移动到新的两个文件夹中?
时间: 2025-01-01 10:36:50 浏览: 6
要编写一个Python脚本来完成这个任务,我们可以使用`os`, `shutil`, 和 `random` 模块。首先,确保你有权限访问这些文件夹,并已安装了所需的模块(如果未安装,可以通过`pip install os`进行安装)。以下是一个简单的步骤概述:
1. 定义文件夹路径
2. 创建新的目标文件夹(如果有需要)
3. 随机选择图片和文本文件
4. 移动文件
这是一个示例代码片段:
```python
import os
import shutil
import random
# 设置源文件夹路径和目标文件夹路径
src_image_folder = "path_to_source_image_folder"
src_text_folder = "path_to_source_text_folder"
dest_image_folder = "path_to_destination_image_folder"
dest_text_folder = "path_to_destination_text_folder"
# 检查目标文件夹是否存在,不存在则创建
if not os.path.exists(dest_image_folder):
os.makedirs(dest_image_folder)
if not os.path.exists(dest_text_folder):
os.makedirs(dest_text_folder)
# 设定要选择的文件数量
num_files = n # 将 n 替换为你想要选择的文件数量
# 获取源文件夹中的所有文件名(图片和文本)
image_files = [f for f in os.listdir(src_image_folder) if os.path.isfile(os.path.join(src_image_folder, f))]
text_files = [f for f in os.listdir(src_text_folder) if f.endswith('.txt')]
# 验证文件数量是否匹配
assert len(image_files) == len(text_files), "图片和文本文件数量不匹配!"
# 选择指定数量的文件
selected_images = random.sample(image_files, num_files)
selected_texts = random.sample(text_files, num_files)
# 遍历并移动文件
for img_file, txt_file in zip(selected_images, selected_texts):
# 图片文件的完整路径
src_img_path = os.path.join(src_image_folder, img_file)
dest_img_path = os.path.join(dest_image_folder, img_file)
# 文本文件的完整路径
src_txt_path = os.path.join(src_text_folder, txt_file)
dest_txt_path = os.path.join(dest_text_folder, txt_file)
# 移动文件
shutil.move(src_img_path, dest_img_path)
shutil.move(src_txt_path, dest_txt_path)
print(f"文件已经成功随机选择并移动到 {dest_image_folder} 和 {dest_text_folder}。")
阅读全文