嗨,我对编程很陌生,请原谅我的无知。 我试着在任何情况下把10个文件从目录A移到B,但是程序应该足够灵活,当源目录中少于10个文件时,它不会给出错误,而大多数其他文件则不会出错。在
我使用的循环是。当目录中有10个以上的文件时,这种方法很有效
w =0
while w < 10:
w =w+1
apple = random.choice(os.listdir("/home/prabh00b/dakoat_wb_script/2"))
o = ''.join(["/home/prabh00b/dakoat_wb_script/2/", apple])
shutil.move(o,"/home/prabh00b/dakoat_wb_script/")
不要使用} 从目录列表中获取10个元素。这样做的好处是您只需要调用
random.choice
,而是使用^{os.listdir
一次,而不需要循环10次来选择一个新的随机元素。它还将始终为您提供不同的元素,因此您不会试图移动同一个文件两次。在要处理少于10个文件的情况,可以先检查目录列表的长度。我们可以很好地做到这一点,只需得到最少的10个元素或列表的长度(因此最多可以得到10个元素)。在
在这种情况下,波克的回答肯定是最好的。我想为学习目的提出一个替代方案。在
当给定一个空序列时,
random.choice
将引发索引器错误异常(即,当没有更多的文件要移动时)。要使代码正常工作,可以捕获IndexError并停止循环,如下所示:相关问题 更多 >
编程相关推荐