Python glob.glob始终返回空列表

The*_*pes 5 python glob python-3.x

我正在尝试使用glob和os在目录中找到最新的.zip文件。有趣的是,我进行了以下设置,并且之前可以正常运行:

max(glob.glob('../directory/*.zip'), key=os.path.getctime)
Run Code Online (Sandbox Code Playgroud)

现在运行它会使我的max()arg是一个空序列,这很有意义,因为当我尝试这样做时:

glob.glob('../directory/*.zip')
Run Code Online (Sandbox Code Playgroud)

它只返回一个空列表。使用完整路径也会给我一个空列表。尝试其他目录也可以得到一个空列表。考虑到以前的工作原理,我对这里发生的事情感到非常困惑。救命?

编辑:使用以下命令使其重新工作: glob.glob(/Users/*/directory/*.zip)

小智 11

您需要**glob 运算符:

glob.glob('**/*.zip',recursive=True)

例如,将匹配当前目录和所有子目录中以“.zip”结尾的所有文件。


小智 6

就我而言,我忘记使用[转义目录名称中的特殊字符glob.escape(pathname)

所以glob.glob(pathname),不要尝试glob.glob(glob.escape(pathname))

  • +代表,但不要逃避星号。例如: glob.glob( glob.escape(path) + '/*.jpg' )。转义的星号不会导致全局操作。请编辑您的帖子。 (2认同)

小智 0

我在 ubuntu 上进行通配时遇到了很多问题。这段代码在 Windows 上运行良好

cv_img = []
for img in glob.glob('/home/itisha/Desktop/op/*.JPG'):
    print('hi')
    n= cv2.imread(img)
    cv_img.append(n)
Run Code Online (Sandbox Code Playgroud)

但对于 Ubuntu,你必须将第 2 行替换为

for img in glob.glob('/home/*itisha/*Desktop/*op/*.JPG'):
Run Code Online (Sandbox Code Playgroud)

  • 如果你的路径以“~”开头,我的 mac 上的 glob.glob 将返回空列表。它不认识这一点。 (5认同)