3

所以我仍在自学 Python,我想为我的服务器创建一个小脚本,它会告诉我我的 HDD 是否已安装,以及在我登录时是否为我安装它。(我有它~/.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)

我怎样才能知道是否mountscript.sh成功?

4

2 回答 2

4

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

>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1
于 2013-11-14T07:49:39.000 回答
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() 的命令参数周围的括号

于 2013-11-14T07:22:59.387 回答