実際にマスターマシンと 3 つのスレーブマシンを持つ 48 コアのクラスターで、Python スクリプトを使用して一連のファイルを生成しようとしています。ファイルのセットを生成し、それらに対していくつかのスクリプトを実行し、結果を収集してから削除する必要があります。ファイルの再生成、実行、削除などのプロセスをもう一度繰り返します。同じ名前のファイルを削除して再生成すると、スレーブマシンがファイルを見つけることができないと不平を言うことがわかります。私はpythonスクリプトを実行していますos.system()
この投稿から、実行に進む前にスクリプトがファイルを生成するのを実際に待つsubprocess.Popen()
よりも、使用する方が良いことを学びました。またはをos.system
使用して待機することもできますが、os.systems を subprocess.popens または subprocess.calls に変換したいので、ここで立ち往生しています。os.system("pause")
time.sleep(whatever)
私はpythonのドキュメントを調べて試してみましたsubprocess.Popen('ls')
が、動作するような単純なものを得ることができませんsubprocess.Popen('cd /whatever_directory')
.
ばかげているように聞こえるかもしれませんが、ではなくcd
throughのような単純なコマンドを実行するにはどうすればよいでしょうか?subprocess
os.system('cd')
それでは、実際に以下をサブプロセスに変換したいと思います。どうすればいいのですか?
import os,optparse
from optparse import OptionParser
parser.add_option("-m", "--mod",dest='module', help='Enter the entity name')
parser.add_option("-f", "--folder", dest="path",help="Enter the path")
module=options.module
path=options.path
os.system('python %s/python_repeat_deckgen_remote.py -m %s' %(path,module))
os.system を subprocess.Popen に置き換えました。しかし、それは私に多くの不満を与えました:
File "/usr/lib64/python2.6/subprocess.py", line 633, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1139, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory