我试图通过一个 48 核集群上的 python 脚本生成一组文件,该集群实际上有一个主机器和 3 个从机器。我需要生成一组文件,在它们上运行一些脚本,收集结果然后删除它们。我再次重复该过程-重新生成文件,执行,删除等,当我删除并重新生成具有相同名称的文件时,我看到从机抱怨它找不到文件。我正在运行python脚本os.system()
我从这篇文章中了解到,最好使用它subprocess.Popen()
而不是os.system
让它实际上等待我的脚本生成我的文件,然后再继续执行。我可以使用os.system("pause")
ortime.sleep(whatever)
等待,但我想将我的 os.systems 转换为 subprocess.popens 或 subprocess.calls 我被困在这里。
我浏览了 python 文档并尝试了subprocess.Popen('ls')
,但我无法获得像subprocess.Popen('cd /whatever_directory')
工作这样简单的东西。
听起来可能很傻,但是我如何执行这样一个简单的命令,比如cd
throughsubprocess
而不是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