检查os.system()的返回值

1 投票
2 回答
3939 浏览
提问于 2025-04-16 16:03

我喜欢使用os模块里的system()命令。有没有办法检查这个命令是否有回复呢?我已经写了代码,可以在命令运行超过x秒后终止它,但我想改进一下,如果它在x秒内没有回复,也能终止它。

谢谢!

2 个回答

1

你没有说你使用的是什么操作系统。可惜的是,Windows和Linux的情况是不同的。以下是我通常的做法:

import os

try:
    WEXITSTATUS = os.WEXITSTATUS
except AttributeError: # running on Windows
    def WEXITSTATUS(arg):
        return arg
    os.environ["HOME"] = os.environ["USERPROFILE"]


if WEXITSTATUS(os.system(cmd)) != 0:
    pass # bad return value
else:
    pass # good return value
4

这要看你说的“回复”是什么意思。os.system() 会返回命令的退出状态(这是一个整数,通常成功时返回0)。如果这还不够,你可以看看 subprocess 模块。

撰写回答