You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取命令行参数生成文件组合并计算内容并集的实现问题

完整实现方案

核心修改说明

  • 非空组合生成:原代码遍历组合长度时从0开始,会生成空组合,改为从1开始遍历即可直接过滤空组合
  • 逻辑整合:遍历生成的所有非空组合,按顺序生成序号,逐个读取组合对应文件的内容,求行去重并集后输出到对应文件

完整代码

import sys
import itertools 
from itertools import combinations

# 读取命令行参数
number = int(sys.argv[1])
a_list = sys.argv[2: number+2]

# 生成所有非空组合
all_combinations = []
# 遍历组合长度,从1开始直接排除空组合
for r in range(1, len(a_list) + 1):
    combinations_object = itertools.combinations(a_list, r)
    all_combinations += list(combinations_object)

# 遍历每个组合生成输出文件
for idx, combo in enumerate(all_combinations, start=1):
    # 初始化存储行的集合
    line_set = set()
    # 读取组合内所有文件的内容,加入集合自动去重
    for item in combo:
        file_name = f"{item}.txt"
        with open(file_name, 'r', encoding='utf-8') as fin:
            line_set.update(fin.readlines())
    # 输出到对应序号的文件
    output_file = f"outputfile_{idx}.txt"
    with open(output_file, 'w', encoding='utf-8') as fout:
        fout.write(''.join(line_set))

执行说明

示例执行命令:python3 myProgram.py 3 A B C
执行后会生成7个输出文件,与要求的顺序完全对应:

  • outputfile_1.txt:对应组合A,内容为A.txt的内容
  • outputfile_2.txt:对应组合B,内容为B.txt的内容
  • outputfile_3.txt:对应组合C,内容为C.txt的内容
  • outputfile_4.txt:对应组合AB,内容为A.txt和B.txt的行去重并集
  • 以此类推直到outputfile_7.txt对应组合ABC的内容

可选优化

如果需要去掉每行末尾的换行符再进行去重,可以将读取文件的逻辑改为:
line_set.update([line.rstrip('\n') for line in fin.readlines()])
输出的时候再统一加换行即可。

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:03