必须运行两次glob.glob才能工作Python3

问题描述

我正在尝试在“下载”目录中抓取所有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))