为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式检测命令是否可以作为模块运行

以编程方式检测命令是否可以作为模块运行

海绵宝宝撒 2023-06-13 17:21:08
我有一个接受命令的函数:import subprocessdef run_command(command: str):    subprocess.run(['python', '-m', command])我想告诉您是否command可以作为python -m <command>.例如:doctest会算,因为我可以跑python -m doctestfoo不会,因为它会返回No module named foo有没有办法告诉我,在我的函数中,是否command有一个可以运行的 Python 模块?最简单的方法就是try-except,但我想避免这样做,因为它可能会掩盖其他错误。
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

您可以捕获命令的输出并检查 stderr 以查看它返回的内容。此代码检查二进制字符串“No module named”是否在 stderr 中,这意味着未找到该命令


import subprocess



def run_command(command: str):

    output = subprocess.run(['python', '-m', command], capture_output=True)

    if b"No module named" in output.stderr:

      print("Command not found")

    else:

      #command was found


查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 52 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信