-1

我想 glob 几个目录,每个目录都包含一个名为 GDS_XYZ/GDS_XYZ.summary.txt 的文件。XYZ 从一个文件夹更改到另一个文件夹,所以我这样做了

glob.glob('GDS_*/GDS*.summary.txt')

但是,结果['GDS_0744-2358/GDS*.summary.txt']['GDS_0744-2358/GDS_0744-2358.summary.txt']

谁能告诉我为什么会这样以及我能做些什么?据我所知, glob 需要多个通配符......谢谢!

4

3 回答 3

1

当我提出其他解决方案时,人们讨厌我。但请考虑:

import os
for root, folders, files in os.walk('./'):
    if os.path.basename(root)[:4] == 'GDS_':
        print('Checking: ' + root)
        for f_name in files:
              if f_name[:3] == 'GDS':
                  print('\t' + f_name)

它将递归地检查文件夹结构./并查看它所在的文件夹是否已命名GDS_*,如果是,则检查其中的所有文件是否为GDS*. 然后它将遍历下一个文件夹,依此类推。

于 2013-05-06T14:27:28.633 回答
0

您可以使用Formic(披露:我是作者)。Formic 完全符合您对包含一个(或多个)目录的 glob 的期望:

import formic
fileset = formic.FileSet(include="GDS_*/GDS*.summary.txt")

for file_name in fileset:
    # Do something with file_name

Formic 默认开始搜索当前工作目录。您还可以使用命名参数directory从其他地方开始:

fileset = formic.FileSet(include="GDS_*/GDS*.summary.txt", directory="/some/where/else")

希望这对你有用

于 2013-05-08T04:10:37.957 回答
0

也许是因为我在 bash 和 python 中都做了很多事情,但我更喜欢通过 sh 模块使用 shell 的 glob 函数:

import sh
sh.glob('what*ever/some*thing')

如果 python 和 bash glob 功能有任何差异,我不需要知道,因为我只使用 shell。

于 2013-05-06T14:43:04.137 回答