2010-08-10 61 views
4

我有一个目录列表(它们的绝对路径)。每个目录包含一定数量的文件。在这些文件中,我想从每个目录中获得两个文件。我想要的两个文件的名称中有一些字符串模式,为了这个例子,字符串将是'stringA','stringB'。如何从Python目录中获取文件

所以我需要的是元组列表。每个元组都应该有一个stringA文件和一个stringB文件。每个目录应该有一个元组。每个目录保证有两个以上的文件,并保证只有一个stringA和一个stringB文件。

什么是最有效的方法来做到这一点?也许使用列表生成器?

编辑:

一个例子:

dirs = ['/dir1', '/dir2', '/dir3'] 

result = [('/dir1/stringA.txt', '/dir1/stringB.txt'), ('/dir2/stringA.txt', ...) ...] 

输入是目录(目录的列表),并输出应为的结果(元组的列表)。

回答

1

看看这对你的作品:

import glob 
result = zip(sorted(glob.glob('/dir/*stringA*')), sorted(glob.glob('/dir/*stringB*'))) 
+0

+1 TWAS我的回答太 – awesomo 2010-08-10 23:10:43

+0

有没有办法来概括“/ DIR/* * stringA”为......任何目录下工作吗?编辑:其实我不明白这是如何工作的。它如何迭代字典列表? – 2010-08-10 23:18:33

+0

当然有一种方法可以推广到任何目录。只需通过传递,例如'/'+ mydir +'/ * stringA *'手动构建字符串。另外,字典中没有迭代:glob()返回一个字符串列表,而zip()将这两个字符串列表“拉链”成一个元组列表(如拉链)。 – 2010-08-10 23:51:27

相关问题