检查子进程调用是否成功执行

时间:2013-11-14 07:17:10

标签: python subprocess

所以我仍然在教自己Python,我想为我的服务器创建一个小脚本,它会告诉我我的硬盘是否已安装,如果不是在我登录时为我安装它。(我在{{{ 1}})。

我面临的问题是:

~/.bashrc

如何判断try: with open('/media/Hitachi/mountfile.txt', 'r') as f: print(f.readline()) except: print('HDD is not mounted') if not os.path.exists('/media/Hitachi/media'): print('Attempting to mount HDD') script = subprocess.call('mountscript.sh', shell=True) 是否成功?

2 个答案:

答案 0 :(得分:4)

subprocess.call方法返回进程的returncode,以便您可以检查以查看调用是否成功。

>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1

答案 1 :(得分:0)

为什么不是简单的if / else语句并使用check_call

if os.path.exists('/media/Hitachi/mountfile.txt'):
    print("it's mounted")
else:
    print('HDD is not mounted')
    if not os.path.exists('/media/Hitachi/media'):
        print('Attempting to mount HDD')
        script = subprocess.check_call(['mountscript.sh','2>file.txt'], shell=True)

无论如何,故事的寓意是不要忘记subprocess.call()或check_call()的命令参数的括号

相关问题