Unix文件名Python中的通配符?

2024-10-01 11:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

Unix文件名通配符如何在Python中工作?在

一个给定的目录只包含子目录,在每个子目录中(除其他外)有一个文件,其名称以已知字符串结尾,例如_ext。文件名的第一部分总是不同的,所以我需要使用这个模式来获取文件。在

我想这么做:

directory = "."
listofSubDirs = [x[0] for x in os.walk(directory)]
listofSubDirs = listofSubDirs[1:] #removing "."

for subDirectory in listofSubDirs:
    fileNameToPickle = subDirectory + "/*_ext" #only one such file exists
    fileToPickle = pickle.load(open(fileNameToPickle, "rb"))
    ... do stuff ...

但是没有模式匹配发生。它在Python下如何工作?在


Tags: 文件字符串in目录名称for文件名结尾
1条回答
网友
1楼 · 发布于 2024-10-01 11:39:06

Shell通配符模式在Python中不起作用。使用^{}^{}模块来解释通配符。fnmatch解释通配符并允许您根据它们匹配字符串,glob在内部使用fnmatch,并与{}一起提供匹配文件名的列表。

在本例中,我将使用fnmatch.filter()

import os
import fnmatch

for dirpath, dirnames, files in os.walk(directory):
    for filename in fnmatch.filter(files, '*_ext'):
        fileNameToPickle = os.path.join(dirpath, filename)
        fileToPickle = pickle.load(open(fileNameToPickle, "rb"))

如果您的结构只包含一个级别的子目录,您还可以使用一个glob()模式来表示;表达式的路径中的*/将展开以匹配所有子目录:

^{pr2}$

相关问题 更多 >