【发布时间】:2021-09-08 09:13:32
【问题描述】:
我有一个包含数千个文件的目录(data)。每次我想选择仅相差一个字符的three 文件AB[C,D,E] 并想对选定的三个文件执行一些计算稍后。
我的文件在目录中如下所示
DT.ABC.2007.182.144018.txt
DT.ABD.2007.182.144018.txt
DT.ABE.2007.182.144018.txt
DT.ABC.2001.005.1444.txt
DT.ABD.2001.005.1444.txt
DT.ABE.2001.005.1444.txt
DT.ABC.2003.005.1244.txt
DT.ABD.2003.005.1244.txt
DT.ABE.2003.005.1244.txt
一开始我想打印
DT.ABC.2007.182.144018.txt
DT.ABD.2007.182.144018.txt
DT.ABE.2007.182.144018.txt
然后
DT.ABC.2001.005.1444.txt
DT.ABD.2001.005.1444.txt
DT.ABE.2001.005.1444.txt
同样的过程会一直持续到完成目录中所有文件的读取。
我尝试了下面的代码:
import glob
for file in glob.glob('/data/*.txt'):
print(st)
但它随机打印所有文件而不是打印相同的三个(仅由[C,D,E]字符不同。希望专家能帮助我。提前谢谢。
【问题讨论】:
-
前缀是否始终与示例中的相同?如果是这样,您可以提取后缀并按此分组
-
是 DT.AB?它总是一样的
-
请不要破坏您的帖子。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(在 CC BY-SA 4.0 license 下)。根据 SE 政策,任何破坏行为都将被撤销。
-
这里真正的问题是您的问题不清楚。
glob不会产生随机结果,它会按字母顺序准确返回与您指定的模式匹配的文件。如果您想要一个更受约束的模式,则需要在调用中指定它(或者可能在print周围添加一个条件以跳过您不想要的那些,如果为您想要的内容表达一个 glob 模式比简单的 glob 模式允许)。
标签: python pandas linux bash numpy