Python如何使用子进程将字典传递到脚本中

时间:2014-06-22 19:18:21

标签: python dictionary subprocess

我目前有一个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?

1 个答案:

答案 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