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

时间:2020-09-24 04:43:35

标签: python glob

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

2 个答案:

答案 0 :(得分:1)

事实证明这是一个计时问题。我尝试访问的文件仍在下载过程中,这就是Glob返回空的原因。我在全局字词之前插入了time.sleep(5),它现在运行顺利。

答案 1 :(得分:0)

我可以建议另一种方法

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))