【发布时间】:2016-08-23 20:19:08
【问题描述】:
我有大约 500 万个 csv 文件存储在大约 100.000 个文件夹中。每个文件夹包含大致相同数量的文件,并且文件夹中的文件数量总是偶数。对于统计建模项目,我需要找到所有这些文件的路径并将它们以有点奇怪的顺序加载到列表中。
我特别需要坚持以下几点:
- 唯一性:每个文件只能在列表中出现一次
- 对:每个文件必须与同一文件夹中的另一个文件相邻(如果由于随机性,它可以相邻两个)
- 随机性:任何两个未“配对”的文件彼此相邻的概率应该相同(即,不能仅对所有文件进行迭代)
我在下面创建了一个示例。
文件
Folder_1
- File_A
- File_B
- File_C
- File_D
Folder_2
- File_E
- File_F
- File_G
- File_H
良好的结果(随机,但遵守配对规则)
paths = ['Folder_1/File_A', 'Folder_1/File_D', 'Folder_2/File_G', 'Folder_2/File_F', 'Folder_2/File_E', 'Folder_2/File_H', 'Folder_1/File_C', 'Folder_1/File_B']
一个简单的方法可能是“选择一个随机文件夹,在该文件夹中选择一个随机文件,然后在文件夹中选择一个随机对。将这些选择保存在列表中以避免再次被选择。重复。”。但是,这将花费太长时间。你能推荐一个创建这个列表的好策略吗?如果需要,可以稍微放宽随机性要求。
【问题讨论】:
-
你尝试过什么吗?
-
是的,我已经完成了我在底部描述的简单方法的粗略版本。
-
文件/文件夹名称是否遵循模式?
-
你需要把它列成一个列表吗?或者可能是,例如发电机?
-
生成器也可以工作。命名没有规律。
标签: python performance io