如何使用 glob() 输出作为 os.listdir() 的输入

数据挖掘 Python 数据
2022-02-18 23:42:10

我正在尝试使用 glob.glob() 的输出作为 os.listdir() 的输入,以获取目录中的文件数。glob() 的输出如下:

f = glob.glob(ct)
print(f)

['C:\\Users\\tennant\\Desktop\\RF WAVEFORMS\\SPRING 2018\\RF\\1L22\\2018_05_02\\133258.2']

如果我尝试将其用作 listdir() 的输入,则会出现以下错误

test = os.listdir(str(f))

在此处输入图像描述

最终通过足够的反复试验,我找到了解决方案。

f = glob.glob(ct)
fnew = str(f).strip('[]')
test = os.listdir(fnew.replace('\'',""))
print(fnew.replace('\'',""), len(test))

C:\\Users\\tennant\\Desktop\\RF WAVEFORMS\\SPRING 2018\\RF\\1L22\\2018_05_02\\133258.2 7

但是它很混乱,我显然不了解 glob() 或一般字符串的输出更基本的东西。任何可以清理此代码并帮助我理解的东西都将不胜感激!

1个回答

假设您有一个要传递给glob通配符匹配的字符串,glob将返回一个匹配列表因此,您无需从该列表中创建一个字符串并替换方括号等。您可以遍历该列表并对每个值执行某些操作,这些值已经是字符串。

results = glob.glob(your_pattern)

根据您的代码,结果实际上是您要计算每个文件夹名称的文件夹名称列表。我们可以循环results并打印计数:

for folder in results:
    n = len(os.listdir(folder))
    print("Folder: {0} --> \t {1} files".format(folder, n))