问题描述
我正在尝试在“下载”目录中抓取所有mp3文件(在按程序下载之后)并将它们移动到新文件中。但是,每当我尝试使用glob来获取可用的.mp3文件的列表时,我都必须对其进行两次glob才能正常工作(第一次运行时,它会返回一个空列表)。有人知道我在这里做错了吗?
import glob
import os
import shutil
newpath = r'localpath/MP3s'
if not os.path.exists(newpath):
os.makedirs(newpath)
list_of_files = glob.glob('localpath/Downloads/*.mp3')
for i in list_of_files:
shutil.move(i,newpath)
解决方法
事实证明这是一个计时问题。我尝试访问的文件仍在下载过程中,这就是Glob返回空的原因。我在全局字词之前插入了time.sleep(5)
,它现在运行顺利。
我可以建议另一种方法
from pathlib import Path
from shutil import move
music = Path("./soundtrack")
# you can include absolute paths too...
newMusic = Path("./newsoundtrack")
# makes new folder specified in newMusic
newMusic.mkdir(exist_ok=True)
# will select all
list_of_files = music.glob("*")
# u want to select only mp3's do:
# list_of_files = music.glob("*.mp3")
for file in list_of_files:
move(str(file),str(newMusic))