3

Pythonスクリプトを使用して、Linuxで多数のジョブをスケジュールしようとしています。現在、私のスクリプトは次のようになっています。

import subprocess
command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) 
subprocess.Popen([command,], shell=True)

しかし、これは機能していないようで、誰かが私が何をすべきかについてアドバイスできることを望んでいました.

4

2 に答える 2

3

を渡す場合shell=True、次Popen()の文字列が必要です。

import subprocess
command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) 
subprocess.Popen(command, shell=True)

また、「うまくいかない」とはどういう意味ですか?それは私にとってはうまくいきます:

>>> import subprocess
>>> subprocess.Popen('echo "asd" | rev', shell=True).communicate()
dsa
(None, None)

そしてあなたのコードも:

>>> import subprocess
>>> subprocess.Popen(['echo "asd" | rev',], shell=True).communicate()
dsa
(None, None)
于 2012-05-20T19:12:54.627 に答える
2

あなたの問題はatコマンドの使用です。それは文字列を取得するので、あなたが望むのはもっとです

command = 'echo python foo.py %s %s | at %s' % (arg1, arg2, starttime)

またはよりpythonicな方法で

sched_cmd = ['at', starttime]
command = 'python foo.py %s %s' % (arg1, arg2)
p = subprocess.Popen(sched_cmd, stdin=subprocess.PIPE)
p.communicate(command)
于 2012-05-20T19:09:32.790 に答える