从脚本生成的另一个脚本/ json传递args时从另一个脚本运行python脚本?

时间:2016-07-30 22:36:22

标签: python

所以我有3个脚本,为了简单起见,我们称之为a.py,b.py和c.py

现在a.py创建一个包含我要传递给b的数据的json,它使用这些数据创建另一个包含另一个相关数据子集的json 我想从c.py做这个动作。我怎样才能让b从a生成的json中读取,然后将b生成的json传递给c。我考虑过像这样导入

var PreDates = ["1","2"];
PreDates.adClass('active-select-color');
var selected = [];

id假设我将从b导入函数,但实际上我需要b中的所有函数,我只是从b导入所有函数并正常传递参数或者是否有其他方法来处理它?对于更多的背景,

c.py将创建一个目录,该目录将存储来自b.py的json。 我还需要在我的工作目录中使用 init .py来执行这些导入,它们都在同一目录中。

1 个答案:

答案 0 :(得分:2)

(从评论到问题)

考虑以下文件:

#-- 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,甚至可以从其他文件调用。