嗨,我是编程新手,请原谅我的无知.我试图在任何情况下将dir A中的10个文件移动到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/")
Run Code Online (Sandbox Code Playgroud)
而不是使用random.choice,用于random.sample从目录列表中获取10个元素.这样做的好处是,您只需要调用os.listdir一次,而不需要循环10次只是为了选择一个新的随机元素.它还将始终为您提供不同的元素,因此您最终不会尝试将同一文件移动两次.
要处理少于10个文件的情况,您可以先检查目录列表的长度.我们可以通过获得最小值10或列表长度来很好地完成这项工作(因此您最多可获得10个元素).
files = os.listdir('/home/prabh00b/dakoat_wb_script/2')
for fileName in random.sample(files, min(len(files), 10)):
path = os.path.join('/home/prabh00b/dakoat_wb_script/2', fileName)
shutil.move(path, '/home/prabh00b/dakoat_wb_script/')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |