如何从单个TXT文件读取两个参数传入Python函数process的对应形参?
问题原因
你写的代码存在4个核心错误:
- 函数名拼写错误:
proccess多写了1个字母c,正确函数名是process - 推导式逻辑错误:
line.split(';')已经是当前行按分号拆分的完整列表,不需要额外嵌套for item in ...遍历拆分后的单个元素,该写法完全不符合取首元素为state、剩余元素为inputs的需求 - 文件迭代器仅可消费一次:你写了两个独立遍历
input_file的生成器,第一个生成器读完文件所有内容后,第二个生成器无法读取到任何数据 - 传参逻辑不匹配:
process单次调用仅接受单个state字符串和单个inputs列表,你直接把所有行的state、所有行的inputs打包成两个生成器传入,和函数的参数要求不匹配
正确实现方案
方案1:逐行处理(最简洁,内存占用低)
直接遍历文件每行,拆分后调用函数即可:
# fa为你已经构造好的有限状态机参数 with open('input_file.txt', 'r', encoding='utf-8') as input_file: for line in input_file: line = line.strip() # 跳过空行 if not line: continue parts = line.split(';') current_state = parts[0] current_inputs = parts[1:] process(fa, current_state, current_inputs)
方案2:用推导式批量预处理(适合需要先收集所有参数再处理的场景)
with open('input_file.txt', 'r', encoding='utf-8') as input_file: # 推导式一次性生成所有 (state, inputs) 参数对 param_list = [ (parts[0], parts[1:]) for parts in (line.strip().split(';') for line in input_file) if parts ] # 遍历调用函数 for state, inputs in param_list: process(fa, state, inputs)
内容的提问来源于stack exchange,提问作者newbiecoder11
相关产品推荐
相关产品推荐

