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

必须运行glob.glob两次才能工作(Python 3),python,glob,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) lis

我试图抓取我的下载目录中的所有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)

我可以建议另一种方法吗

从pathlib导入路径
从舒蒂尔进口
音乐=路径(“/配乐”)
#你也可以包括绝对路径。。。
newMusic=路径(“./newsoundtrack”)
#在newMusic中指定新文件夹
newMusic.mkdir(exist\u ok=True)
#将选择全部
文件列表=music.glob(“*”)
#您只想选择mp3的do:
#文件列表=music.glob(“*.mp3”)
对于\u文件列表中的文件:
移动(str(文件),str(新音乐))

这是一个时间问题。我试图访问的文件仍在下载过程中,这就是glob返回空文件的原因。我在glob之前插入了一个
时间。sleep(5)
,现在运行顺利。

您的代码当前的行为是什么?这很奇怪。所以你运行这个程序,它没有看到任何文件,然后你以同样的方式运行同一个程序,第二次它看到并复制文件?你复制了多少次这种行为?这可能是一个计时问题,比如在运行此程序之前,您是否正在运行将.mp3文件放在那里的程序?我无法重现此问题。我建议改用pathlib!!时间似乎是我能看到的最合乎逻辑的问题。第一次运行脚本时,文件会正确下载到我的下载文件夹中。然后,当它试图将新mp3文件的名称拉入文件列表时,它什么也找不到。但是,如果在我运行文件时文件已经在下载文件夹中,它就能够抓取并移动它们。我猜当它转到下一段代码时,文件仍在下载。编辑:在下载命令后加入time.sleep(),它工作得非常好!谢谢大家的建议