在没有内部目录的目录目录中产生文件

时间:2018-06-30 17:07:58

标签: python python-3.x yield-keyword

我的任务是训练ML模型。我想让这些文件避免将来出现内存问题。我偶然发现了一个经过调整的解决方案。但是修改并不能完全满足我的需求。假设我的文件夹结构如下:

../

A /

2014-01-01

2014-01-05

2014-01-06

/ B

2014-01-02

2014-01-06

...

所以本质上是在文件夹中:test,我的子目录是:A,B .. etc 在每个子目录中,我都有日期:2014年1月1日,等等。

我需要生成器执行的操作是以日期时间顺序给我生成文件,而忽略目录本身(顺序子目录无关紧要,我可以先从B然后从A获取文件,没关系)

我有以下代码atm:

def sort_func(x):
    x_ = x
    x = str(x)
    # dates - files
    try:
        return datetime.datetime.strptime(x, "%Y-%m-%d")
    # folder. Ignore
    except ValueError as e:
        return x_
    except Exception as e:
        raise(e)

p = pathlib.Path('../datasets/train/')

a = sorted(p.glob('**/*'), key=sort_func)

这将输出如下内容:

[PosixPath('../datasets/train/A'),
 PosixPath('../datasets/train/A/2014-01-01'),
 PosixPath('../datasets/train/A/2014-01-02'),
 PosixPath('../datasets/train/A/2014-01-03'),
...]

即我不需要第一个路径,也不需要所有目录路径。

我如何忽略这些?

编辑:实际上,似乎glob返回了一个列表... p.glob('*/*')似乎可以解决问题,但是sorted(.)却给了我一个列表,而不是产生一个一张一张地

1 个答案:

答案 0 :(得分:0)

您可以使用is_file对象的Path方法进行过滤:

a = sorted([path for path in p.glob('**/*') if path.is_file()], key=sort_func)