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

如何在Python程序中调用C可执行文件并将运行结果输出至指定文件

问题原因

> 是Shell提供的重定向语法,你当前使用列表参数调用subprocess.run的方式默认不启用Shell解析,所以你传入的第三个参数outputfile会被直接当成命令行参数传递给C可执行文件,而非触发重定向逻辑,自然不会生成对应的输出文件,程序的运行结果会直接打印在终端标准输出中。

解决方案

方案1(推荐,无安全风险)

使用subprocess.run内置的stdout参数直接指定输出文件,不需要依赖Shell的重定向功能,写法如下:

import subprocess
import sys

filestem = sys.argv[1]
# 打开输出文件,将子进程的标准输出直接写入该文件
with open('outputfile', 'w', encoding='utf-8') as f:
    subprocess.run(['/home/dev/executable_file', filestem], stdout=f)

如果你的C程序输出是二进制内容,把open的模式改成wb,去掉encoding参数即可。

方案2(不推荐,存在Shell注入风险)

主动开启Shell解析支持,直接把完整的带重定向的命令作为字符串传入:

import subprocess
import sys

filestem = sys.argv[1]
subprocess.run(f'/home/dev/executable_file {filestem} > outputfile', shell=True)

仅当你完全确定filestem参数的来源安全、不存在恶意拼接的场景下再使用该方案,否则可能被传入特殊字符执行任意命令。

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:07