gpt4 book ai didi

python - 为什么 os.remove() 或 shutil.move() 只能移动部分文件

转载 作者:行者123 更新时间:2023-11-28 21:03:32 25 4
gpt4 key购买 nike

我想从训练数据集中随机选择10张图片作为测试数据。如果我只将所选数据复制到目标路径,它就可以工作。但是如果我想删除源数据,它只能删除其中的一部分。我尝试了 os.remove() 和 shutil.move() 函数,但问题仍然存在。以下是我的脚本:

for label in labels:

training_data_path_ch1 = os.path.join(training_data_folder, label, 'ch1')
test_data_path_ch1 = os.path.join(test_data_folder, label, 'ch1')
training_data_path_ch5 = os.path.join(training_data_folder, label, 'ch5')
test_data_path_ch5 = os.path.join(test_data_folder, label, 'ch5')

ch1_imgs = listdir(training_data_path_ch1)

# Randomly select 10 images
ch1_mask = np.random.choice(len(ch1_imgs), 10)
ch1_selected_imgs = [ch1_imgs[i] for i in ch1_mask]

for selected_img in ch1_selected_imgs:
ch1_img_path = os.path.join(training_data_path_ch1, selected_img)
shutil.copy2(ch1_img_path, test_data_path_ch1)
os.remove(ch1_img_path)

print('Successfully move ' + label + ' ch1 images')

然后我添加了一个图像来显示运行状态。

Error Message可以看到,程序确实可以复制图片并删除部分图片,但为什么不能删除所有图片呢?

有什么想法吗?感谢您的帮助!

最佳答案

在:

ch1_mask = np.random.choice(len(ch1_imgs), 10)

您可能会多次返回相同的索引,这意味着您正在尝试复制您已经复制和删除的文件(因此您无法在删除时再次复制它),而是通过 replace=False,例如:

ch1_mask = np.random.choice(len(ch1_imgs), 10, replace=False)

关于python - 为什么 os.remove() 或 shutil.move() 只能移动部分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46360792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com