【发布时间】:2021-10-23 14:59:34
【问题描述】:
我编写了一个代码来移动其中包含子字符串的文件。
import os
import shutil
def move():
path = os.getcwd()
shutil.rmtree('Animals')
firstfolder = 'Animals'
if not os.path.isdir(firstfolder):
os.mkdir('Animals')
for file in os.listdir():
Buffalo = '1837'
donkey = '6104'
Chimpanzee = '9731'
cat = '2905'
rat = '6648'
sheep = '3128'
lizard = '3053'
insect = '2681'
dog = '3901'
#Buffalo
if Buffalo in file:
secondfolder = 'Animals/Buffalo'
thirdfolder = 'Animals/Buffalo/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#donkey
if donkey in file:
secondfolder = 'Animals/donkey'
thirdfolder = 'Animals/donkey/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#Chimpanzee
if Chimpanzee in file:
secondfolder = 'Animals/Chimpanzee'
thirdfolder = 'Animals/Chimpanzee/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#cat
if cat in file:
secondfolder = 'Animals/cat'
thirdfolder = 'Animals/cat/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#rat
if rat in file:
secondfolder = 'Animals/rat'
thirdfolder = 'Animals/rat/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#sheep
if sheep in file:
secondfolder = 'Animals/sheep'
thirdfolder = 'Animals/sheep/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#lizard
if lizard in file:
secondfolder = 'Animals/lizard'
thirdfolder = 'Animals/lizard/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#insect
if insect in file:
secondfolder = 'Animals/insect'
thirdfolder = 'Animals/insect/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
#dog
if dog in file:
secondfolder = 'Animals/dog'
thirdfolder = 'Animals/dog/testfolder'
if not os.path.isdir(secondfolder):
os.mkdir(secondfolder)
if not os.path.isdir(thirdfolder):
os.mkdir(thirdfolder)
shutil.move(file, thirdfolder)
move()
在我当前的工作目录中,我有这些文件: 1):- 2905r20.wav 2):- 5fm2905.wav 3):- nso2905.wav 4):-1sny2905wn3i56.wav
当我运行代码时,它只会移动最后一个文件,即 1sny2905wn3i56.wav。它不会移动所有包含 2905 的文件。它应该移动所有 4 个文件。但我不知道为什么它只移动最后一个文件。当我在移动最后一个文件后再次运行代码时,它正在移动第三个文件并删除被移动的第四个文件。当我再次运行代码时,它正在删除第三个文件并移动第二个文件等等......
如何解决??
【问题讨论】:
-
您的代码在检查文件夹是否存在的
if语句中调用shutil.move。它不应该总是执行吗? IE。检查你的缩进级别。 -
哦。谢谢。我没有注意到这一点。我的代码现在可以使用了!!
标签: python python-3.x file operating-system shutil