[英]Running a python script from another script while passing args from another script/json generated by script?
因此,我有3个脚本,为简单起见,我们将其称为a.py,b.py和c.py
现在a.py创建了一个包含一些我想传递给b的数据的json,该数据将使用b来创建另一个包含其他相关数据子集的json,我想从c.py中执行此操作。 我怎样才能让b从a生成的json中读取,然后将b生成的json传递给c。 我考虑过像这样进口
import a
import b
id假定我将从b导入函数,但实际上我需要b内的所有函数,我只是从b导入所有函数并正常传递参数,还是会有其他方法来处理此问题? 要了解更多情况,
c.py将创建一个目录,来自b.py的json将存储在该目录中。我也需要在我的工作目录中使用init .py进行这些导入,它们都在同一目录中。
(从评论到问题)
考虑以下文件:
#-- b.py ----------------------------------------------------------------------------------
def main():
name = input("Enter your name: ") # Python 3, use raw_input for Python 2
print("Your name is:", name)
#-- a.py ----------------------------------------------------------------------------------
import json
# Some method of generating a json
j = json.dumps({'name': 'Alice'})
并且您希望b.py的main
函数使用a.py生成的json中的数据,而不是main
提示用户的数据。
换句话说,在上面的示例中,您希望将程序打印出来Your name is: Alice
而不会提示用户输入。
如果是这种情况,您可以将代码重构为如下所示:
#-- b.py ----------------------------------------------------------------------------------
def process(name):
print("Your name is:", name)
def get_user_input():
name = input("Enter your name: ") # Python 3, use raw_input for Python 2
process(name) # Prints: "Your name is: (whatever)"
#-- a.py ----------------------------------------------------------------------------------
import json
from b import process
# Some method of generating a json
j = json.dumps({'name': 'Alice'})
# (We created a json for no real reason, parse it back into a dict to access it)
d = json.loads(j)
# Call b.py's process function, and pass it the name in the json
process(d['name']) # Prints: "Your name is: Alice"
这里的“技巧”是将main
功能执行的“工作”分为两个单独的功能。
process
)被命名并对其进行“处理”。 在该示例中,它所做的只是将其打印出来。 get_user_input
)获取用户的输入并将其传递给第一个函数。 完成此操作后,您可以跳过用户输入(因为不需要它,因此您想使用JSON数据),甚至可以从其他文件直接调用process
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.