gpt4 book ai didi

python - 使用目录中所有可能的文件组合作为 python 的输入

转载 作者:行者123 更新时间:2023-11-28 21:57:19 25 4
gpt4 key购买 nike

我有一个 python 程序,它使用两个文件作为输入 - 并计算它们之间的相似性。我想使用目录中所有可能的文件组合作为输入。如何使用 python 扩展我已有的脚本来完成此操作?

我知道有诸如 glob 之类的工具可以遍历整个文件。但是,我还能做些什么来创建所有不同的文件组合?

此外,@hcwhsa 和@Ashish Nitin Patil 如何将 itertoolsglob 结合?

感谢您的任何见解。

更多细节:

我的代码需要 2 个相同的输入(我有一个包含大约 50 个这些文件的目录)。每个输入都是 3 个制表符分隔的列(值 1、值 2、权重)。基本上根据这些信息,我计算了发现的杰卡德系数 here :

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com