我在python
中有一个程序,它使用两个文件作为输入,并计算它们之间的相似性。我想使用目录中所有可能的文件组合作为输入。如何在我已有的脚本上使用python
扩展来实现这一点?
我知道有一些工具,比如可以遍历整个文件的glob
。但是,我可以做什么来创建所有不同的文件组合?
此外,作为@hcwhsa和@Ashish Nitin Patil,如何将itertools
与glob
结合起来??
谢谢你的洞察力。
更多细节:
我的代码需要两个相同的输入(我有一个大约50个这些文件的目录)。
每个输入都是3个选项卡分隔的列(value1、value2、weight)。
基本上,根据这些信息,我计算出了jaccard系数:
def compute_jaccard_index(set_1, set_2):
return len(set_1.intersection(set_2)) / float(len(set_1.union(set_2)))
我想为目录中所有可能的文件组合计算这个系数。
到目前为止,我在本地将每个文件调用为:
with open('input_file1', 'r') as infile_B:
with open('input_file2', 'r') as infile_B:
我的目标是遍历目录中所有可能的文件组合。
最佳答案
此片段比较path
中的所有文件。
import os
from itertools import combinations
path = r'path/to/dir'
entries = os.listdir(path)
filenames = [os.path.join(path, entry) for entry in entries if os.path.isfile(os.path.join(path, entry))]
for (file1, file2) in combinations(filenames, 2):
with open(file1) as f1, open(file2) as f2:
# Compare the files
在Python 3中,它可能做得更优雅一些。
import os
from itertools import combinations
path = r'path/to/dir'
root, _, rel_filenames = next(os.walk(path))
full_filenames = [os.path.join(root, f) for f in rel_filenames]
for (file1, file2) in combinations(full_filenames, 2):
with open(file1) as f1, open(file2) as f2:
# Compare the files
关于python - 使用目录中所有可能的文件组合作为python的输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19983057/