4

別のPythonスクリプトから他の2つのPythonスクリプトを実行する必要があります。コマンドは次のようになります。

#python send.py

#python wait.py

これは、1分間スリープしてから再実行するループで発生します。

コマンドを実行して他のスクリプトを開始する前に、それらがまだ実行されていないことを確認する必要があります。

4

2 に答える 2

18

subprocess.Popenを使用してそれを行うことができます。例:

import subprocess

command1 = subprocess.Popen(['command1', 'args1', 'arg2'])
command2 = subprocess.Popen(['command2', 'args1', 'arg2'])

出力を取得する必要がある場合は、次の手順を実行します。

command1.wait()
print command1.stdout

実行例:

sleep = subprocess.Popen(['sleep', '60'])
sleep.wait()
print sleep.stdout  # sleep outputs nothing but...
print sleep.returncode  # you get the exit value
于 2012-09-26T15:45:18.147 に答える
1
import time
import commands
from subprocess import Popen

while True:
  t_ph = commands.getstatusoutput('ps -eo pid,args | grep script1.py | grep -v service | grep -v init.d | grep -v grep | cut -c1-6')
  t_fb = commands.getstatusoutput('ps -eo pid,args | grep script2.py | grep -v service | grep -v init.d | grep -v grep | cut -c1-6')

  if t_ph[1] == '':
    r_ph = Popen(["python", "script1.py"])

  if t_fb[1] == '':
    r_fb = Popen(["python", "script2.py"])

  time.sleep(60)

また

import time
import commands
from subprocess import Popen

r_ph = False
r_fb = False

while True:

  if r_ph == False:
    r_ph = Popen(["python", "script1.py"])
  else:
    if r_ph.poll():
      r_ph = Popen(["python", "script1.py"])

  if r_fb == False:
    r_fb = Popen(["python", "script2.py"])
  else:
    if r_fb.poll():
      r_fb = Popen(["python", "script2.py"])

  time.sleep(60)

これはもう少しうまく書くことができますが、うまくいきます

于 2012-09-26T16:50:58.070 に答える