Python中通过值获取字典key并替代value传入subprocess.call的方法
解决方法
核心需求实现
你要实现的效果有两种对应处理方式,可根据实际业务场景选择:
- 场景一:循环遍历配置时直接用key作为入参
你现有代码已经在遍历配置字典时同时拿到了键k和值v,直接替换subprocess.call的入参即可,修改对应代码块:
elif args.start: for k,v in config_dict.items(): # 把原来的v替换为k即可完成传key执行的需求 subprocess.call([k], shell=True)
- 场景二:已知某个value,需要反向查找对应的key再传入
如果你的逻辑是先拿到了指定的配置值,需要先找到它对应的key再执行,先对配置字典做反转映射即可(要求配置值唯一,否则同值的key会被后出现的覆盖):
# 生成反转字典:原value作为键,原key作为值 reverse_config = {v: k for k, v in config_dict.items()} # 示例:假设已知待匹配的value为target_value target_value = "你要匹配的配置值" if target_value in reverse_config: get_key = reverse_config[target_value] subprocess.call([get_key], shell=True)
现有代码优化建议
你当前的file_reader函数存在冗余逻辑,前面的遍历赋值操作是无效的,可简化为:
def file_reader(): configParser = configparser.ConfigParser() configParser.read('config.ini') # 遍历section,返回第一个section的配置 for section_name in configParser.sections(): return dict(configParser.items(section_name)) # 无section时返回空字典 return {}
另外注意补充缺失的导入声明:
import configparser import subprocess import argparse as ap
内容的提问来源于stack exchange,提问作者Asad Javed
相关产品推荐
相关产品推荐

