我在Jupyter Notebook中使用Python 3将一个文件夹中20%的文件移动到另一个文件夹,并随机选择它们。我的代码:
path_temp ='/media/Snaps/temp/'
path_valid_break ='/media/Snaps/valid/break/'
files = os.listdir(path_temp)
for x in range(int(len(files)*0.2)):
index = random.randrange(0, len(files))
shutil.move(path_temp + files[index], path_valid_break)
我的初始文件夹中有1249个文件。该代码可以工作并开始移动文件,但是在任意数量(看来是)的文件(35或5或23,...)出现错误后停止:
~/anaconda3/envs/fastai/lib/python3.6/shutil.py in move(src, dst, copy_function)
540 real_dst = os.path.join(dst, _basename(src))
541 if os.path.exists(real_dst):
--> 542 raise Error("Destination path '%s' already exists" % real_dst)
543 try:
544 os.rename(src, real_dst)
Error: Destination path '/media/Snaps/valid/break/snaps123211_-1.png' already exists
启动时目标文件夹为空。代码并不总是在同一文件上阻止,我看不到任何模式。
最佳答案
除了让·弗朗索瓦·法布尔(Jean-FrançoisFabre)的答案外,指出您的代码为每个循环选择一个随机数可能很有用,因此您可能试图将同一文件复制两次。为避免这种情况,您可以随机地随机排列文件列表并选择前20%。
random.shuffle(files)
for thisfile in files[:int(len(files)*0.2)]:
shutil.move(path_temp + thisfile, path_valid_break)
关于python - 无法将所有文件移动到新文件夹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52191950/