我想通過一個實際上有一個主機和三個從機的48核心羣集上的python腳本生成一組文件。我需要生成一組文件,在其上運行一些腳本,收集結果然後刪除它們。我再次重複該過程 - 重新生成文件,執行,刪除等, 當我刪除並重新生成具有相同名稱的文件時,我發現從屬機器抱怨它找不到這些文件。 我通過os.system()
Subprocess.Popen()替換os.system()的問題
運行Python腳本,我從this post得知這是更好地利用subprocess.Popen()
而不是os.system
因此,它實際上等待我的腳本來生成我的文件,與執行操作前。我可以使用os.system("pause")
或time.sleep(whatever)
進行等待,但我想將我的os.systems轉換爲subprocess.popens或subprocess.calls,並且我卡在這裏。
我跑過python文檔並嘗試了subprocess.Popen('ls')
,但我無法得到像subprocess.Popen('cd /whatever_directory')
這樣簡單的工作。
這可能聽起來很愚蠢,但我該如何執行如cd
到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))
我剛剛用subprocess.Popen替換了os.system。 但它給了我很多的抱怨:
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
我明白,我可以使用os.chdir()。但我的問題是,我想使用子進程而不是os.system運行命令。我使用的一個例子是:os.system('cd')起作用,其中'cd'是我所指的命令。那麼,在這種情況下,我如何用子進程替換os.system。 同樣,我已經使用os.system('python * .py)運行python命令。我想用子進程替換os.system,我該怎麼做? – Nanditha 2013-03-23 08:53:05