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

为何os.system执行命令后转字符串输出0?如何获取正确结果?

问题原因

os.system()的返回值不是命令的输出内容,而是命令执行的退出状态码:

  • 返回0表示命令执行成功
  • 返回非0值表示命令执行出错

你代码里的726是cat命令读取文件后直接输出到终端的内容,而print语句打印的是os.system返回的退出码(0,说明cat命令成功执行)。

解决方法

要捕获命令的输出内容,应该用subprocess模块,这是Python官方推荐替代os.system的工具。

方法一:使用subprocess.run

import subprocess
value_cmd = "cat /home/username/project/value.txt"
# 执行命令并捕获标准输出,text=True让返回结果为字符串类型
result = subprocess.run(value_cmd, shell=True, stdout=subprocess.PIPE, text=True)
# 去除输出内容末尾的换行符后打印
print("the value is : " + result.stdout.strip())

方法二:使用subprocess.check_output

如果命令执行出错时需要直接抛出异常,可使用此方法:

import subprocess
value_cmd = "cat /home/username/project/value.txt"
# 捕获命令输出并去除末尾换行
output = subprocess.check_output(value_cmd, shell=True, text=True).strip()
print("the value is : " + output)

执行上述代码后,就能得到你期望的输出:the value is : 726

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:10:34