我想通过一个实际上有一个主机和三个从机的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