Python 在没有内部目录的目录目录中生成文件
我的任务是训练一个ML模型。我希望生成这些文件以避免将来出现内存问题。我偶然发现了一个解决方案,我做了一些调整。但这项修改并不完全符合我的需要。假设我的文件夹结构如下所示: / A/ 2014-01-01 2014-01-05 2014-01-06 /B 2014-01-02 2014-01-06 基本上,在文件夹test中,我有如下子文件夹:A,B。。等 在每个子目录中,我都有日期:2014-01-01等等 我需要生成器做的是按日期时间顺序生成文件,忽略目录本身(顺序子目录无关紧要,我可以先从B获取文件,然后从A获取文件,这无关紧要) 我有以下代码:Python 在没有内部目录的目录目录中生成文件,python,python-3.x,yield-keyword,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。。等 在每个子目录中,我都有日期:2014-01-01等等 我需要生成器做的是按日期时间顺序生成文件,忽略目录本身(顺序子目录无关紧要,我可以先
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'),
...]
i、 e.我不需要第一个路径和所有目录路径
我如何省略这些
编辑:实际上,glob似乎返回了一个列表
p.glob(“*/*”)
似乎起到了作用,但是sorted(.)
给了我一个列表,而不是一个接一个地生成文件您可以使用路径
对象的is_file
方法进行过滤:
a = sorted([path for path in p.glob('**/*') if path.is_file()], key=sort_func)