私はPythonスクリプト 'b.py'を使って5秒間の時間をプリントアウトしています。PythonスクリプトからPythonスクリプトを呼び出すにはどうすればいいですか
while (1):
print "Start : %s" % time.ctime()
time.sleep(5)
print "End : %s" % time.ctime()
time.sleep(5)
そして、私のa.pyに、私がでb.pyを呼び出す:
def run_b():
print "Calling run b"
try:
cmd = ["./b.py"]
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, b''):
print (">>>" + line.rstrip())
except OSError as e:
print >>sys.stderr, "fcs Execution failed:", e
return None
と後で、私はによって 'b.py' を殺す:/ PS_PATH =「は/ usr/binにps -efW "
def kill_b(program):
try:
cmd = shlex.split(PS_PATH)
retval = subprocess.check_output(cmd).rstrip()
for line in retval.splitlines():
if program in line:
print "line =" + line
pid = line.split(None)[1]
os.kill(int(pid), signal.SIGKILL)
except OSError as e:
print >>sys.stderr, "kill_all Execution failed:", e
except subprocess.CalledProcessError as e:
print >>sys.stderr, "kill_all Execution failed:", e
run_b()
time.sleep(600)
kill_b("b.py")
私には2つの質問があります。 1.なぜ 'b.py'からのプリントが表示されないのですか 'ps -efW'を実行すると 'b.py'という名前のプロセスが表示されません。 2.上記のようなプロセスを終了すると、なぜ「許可が拒否されました」と表示されますか?
上記のスクリプトをWindowsのcygwinで実行しています。
ありがとうございます。私は「b.py」とするとき私は「PS -efW」から任意のプリントアウトが表示されないのはなぜ
インセプションパイソン – Nick
'b.py'を殺すために簡単な方法は、' b.py'の出力を読んで)( 'p.killを呼び出すために開始する前にrun_b()' 'から' p'を返すことです。 p.wait() 'を呼び出します。 '。/ b.py'が' cmd'は 'sys.executable'する必要があるだろう、現在の1から別のPythonスクリプトを実行するには – jfs
チェックまた、引数として渡されるスクリプト名 '' ./b.py "'を持つ必要があります。 – jfs