我目前有一个python脚本scriptA.py,它接受位置参数和可选参数。有许多位置参数和许多可选参数,其中一些是可操作的(如标志),其他参数是一个或多个(如列表)。
Positional argument: Name
Optional argument: -Age
Optional argument: --favorite_sports
Optional argument: -isAmerican (if set, stores True, Default False)
如果您想调用scriptA.py,可以通过以下方式执行此操作:
python scriptA.py 'Bill' -Age 15 --favorite_sports basketball baseball -isAmerican
scriptA.py所做的并不重要。
我有另一个脚本B,scriptB.py,想要使用子进程调用脚本A.py. scriptB.py具有scriptA.py在字典中需要的参数,但不知道破折号。例如:
d=dict()
d['Name']=Bill
d['Age']=15
d['favorite_sports']=['basketball', 'baseball']
d['isAmerican']=True
如何运行scriptB.py并在脚本调用scriptA.py中使用通过子进程在scriptB.py中编写的字典d?
答案 0 :(得分:1)
您需要使用子流程吗?为什么不在scriptA中有一个函数接受所有参数作为参数?像这样:
def main(args={}):
pass
if __name__ == '__main__':
d=dict()
d['Name']= # get name
d['Age']= # get age
d['favorite_sports']=[#fav_sports]
d['isAmerican']= #true or false
main(d)
然后从scriptB:
import scriptA
d=dict()
d['Name']=Bill
d['Age']=15
d['favorite_sports']=['basketball', 'baseball']
d['isAmerican']=True
scriptA.main(d)
如果您需要同时处理它们,那么可以查看threading
?:
import scriptA
from threading import Thread
d=dict()
d['Name']=Bill
d['Age']=15
d['favorite_sports']=['basketball', 'baseball']
d['isAmerican']=True
thread = Thread(target = scriptA.main, args = d)
有关线程的更多信息,请参阅this question。