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

如何将Python中os.system调用的标准输出存储到变量中

解决方案

你可以使用Python标准库的subprocess模块替代os.system实现命令输出捕获,os.system仅能返回命令执行的退出状态码,无法捕获标准输出/错误输出内容。

具体修改步骤:

  • 导入subprocess模块(Python自带,无需额外安装)
  • 替换原有os.system相关逻辑,同时修复原代码的异常捕获逻辑问题
  • 将捕获到的输出作为函数返回值,赋值给对应变量即可统一打印

修改后完整代码示例:

import os
import subprocess
from colorama import Fore # 保留你原有代码的colorama导入

website = input(Fore.GREEN + "enter url/website for this scan: ")
ops = input(Fore.GREEN + "enter other operators for xxstrike here (with spaces): ")

def xssstrike():
    try:
        # 直接用cwd参数指定执行目录,不需要手动切换工作目录
        result = subprocess.run(
            f"python3 xsstrike.py {ops} -u {website}",
            shell=True,
            cwd="/mnt/usb/xss-strike",
            capture_output=True,
            text=True # 自动把返回的字节内容转成字符串,无需手动解码
        )
        # 合并标准输出和错误输出,避免遗漏报错信息
        full_output = result.stdout + result.stderr
        return full_output
    except Exception as e:
        return f"oops! there was an error with xss strike: {str(e)}"

# 调用函数获取输出结果
xssstrikeoutput = xssstrike()

# 按你需要的格式统一打印
print("<><><> xss strike output results <><><>")
print(xssstrikeoutput)

补充说明:

  • capture_output=True参数会同时捕获命令的正常打印内容和运行报错内容
  • 如果你使用的Python版本低于3.7,把text=True替换为universal_newlines=True即可兼容
  • 原代码中raise print(xxx)的写法存在语法问题,print()返回None,执行时会抛出额外的类型错误,此处直接将错误信息作为返回值返回即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:42:04