Python调用C可执行文件后读取输出文件并转换为嵌套列表的实现方法
你现有代码的问题是直接将整个文件读取到的完整字符串加入了结果列表,因此输出只有一个包含所有换行、逗号的字符串元素。要得到目标嵌套列表,需要做两层拆分:先按换行符拆分出每一行内容,再对每一行按逗号拆分得到单个字段的列表即可。
推荐修改后的完整代码如下,同时使用with上下文管理器管理文件操作,避免资源泄漏:
import subprocess import sys dataset = sys.argv[1] def func(): subprocess.run(['/home/dev/exec_file', dataset, 'outfile']) f_result = [] with open('outfile', "r") as f: # 逐行遍历文件内容 for line in f: # 去除行尾换行后按逗号拆分,加入结果列表 row = line.rstrip('\n').split(',') f_result.append(row) print(f_result) return f_result
如果你习惯先读取全部内容再处理,也可以用以下写法实现相同效果:
import subprocess import sys dataset = sys.argv[1] def func(): subprocess.run(['/home/dev/exec_file', dataset, 'outfile']) f_result = [] f = open('outfile', "r") content = f.read() f.close() # 拆分所有行,过滤空行后逐行拆分 lines = [line for line in content.split('\n') if line.strip() != ''] f_result = [line.split(',') for line in lines] print(f_result) return f_result
两种写法最终输出的f_result就是你需要的嵌套列表格式。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

