Python - 启动外部程序并退出脚本?

时间:2014-12-25 10:27:09

标签: python operating-system

我已经写了一个小脚本来启动程序并在程序退出时发送邮件:

#!/usr/bin/env python
# coding: utf8

import psutil    
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
import time
import os

program = "transmission-gtk"
if not program in [psutil.Process(i).name for i in psutil.get_pid_list()]:
   try:
      os.system(program)
      text = "but it has been restarted" 
   except IOError as e:
      text = "The restart failed!\n" + e

   time.sleep(2)

   msg = MIMEText("Transmission has been closed !!\n" + text)
   msg["From"] = "adr@wmail.fr"
   msg["To"] = "adr@wmail.fr"
   msg["Subject"] = "subject"
   p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
   p.communicate(msg.as_string())

该脚本由cron每15分钟启动一次。 所有的作品,除了一件事:传输在脚本退出的同时退出 ......

我不想写一个永久性脚本(raspberry-pi),所以while循环不是我想要的。

然后,如何启动我的程序?

1 个答案:

答案 0 :(得分:1)

您可以使用os.system(program+'&')来执行程序的执行。

此外,即使您的程序有效,您也应该查看subprocess模块(打算替换os.system()等)。