Python调用带命令行参数的C可执行文件实现单参数启动脚本的方法
问题原因
- 你的C程序逻辑要求运行时必须传入2个额外参数(程序名本身算第0个参数,总argc=3),分别是数据集主干名、结果文件名。你之前调用时传入了无用的
-u、-f参数,且没有传入结果文件名,参数数量不匹配,因此C程序直接输出用法提示后退出,没有正常生成结果文件。 - 你之前硬编码读取
myoutfile的写法无法适配不同的输入数据集,需要和调用C程序时传入的结果文件名保持同步。
解决方案
直接修改first_code.py的代码如下:
import os import sys def main(): if len(sys.argv) < 2: print("用法:python3 first_code.py <数据集主干名>") sys.exit(1) dataset = sys.argv[1] # 自定义结果文件名,和传入的dataset绑定,实现通用逻辑 result_file = f"{dataset}_output" # 调用C程序时传入符合要求的两个参数 os.system(f"/home/dev/mycode {dataset} {result_file}") # 读取.names文件 with open(f"{dataset}.names", 'r', encoding='utf-8') as f1: names_content = f1.read() # 此处补充.names文件的处理逻辑 # 读取生成的结果文件 with open(result_file, 'r', encoding='utf-8') as f2: result_content = f2.read() # 此处补充结果文件的处理逻辑 if __name__ == "__main__": main()
优化建议(可选)
建议替换os.system为更安全可控的subprocess模块,方便捕获运行错误、处理标准输出/错误流:
import subprocess # 替换原os.system调用行 subprocess.run( ["/home/dev/mycode", dataset, result_file], check=True, capture_output=True, text=True )
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

