我有一个接受命令的函数: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
添加回答
举报
0/150
提交
取消