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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:27:04