【问题标题】:python use shell command and send the outputpython使用shell命令并发送输出
【发布时间】:2018-08-02 07:56:56
【问题描述】:

我有一个 python 文件名“a.py”和另一个 python 文件名“b.py”。我想在 b.py 文件中使用命令运行 a.py,我使用以下代码:

import os

def b():
    os.system("python a.py")

但是 a.py 有一个列表名称“list_exam”,我想通过命令行代码将它传递给 b.py。我不知道如何在 a.py 中传递它以及如何在 b.py 文件中使用命令。

非常感谢。

【问题讨论】:

  • 您绝对需要从命令行执行此操作吗?对于这个用例,导入可能会容易得多
  • 其实我的主要命令是 os.system("python b.py -c configs/conf.json") 我想每次发送不同的配置。 @FlyingTeller
  • 序列化/反序列化?或者只是使用模块......如果你有 json 你可以在那里传递更多的列表数据

标签: python shell command-line


【解决方案1】:

请不要使用 shell 命令调用其他 Python 脚本,它既不高效也不可扩展。

如果a.py:

def do_somthing(param1, param2):
    ...
    list_exam = make_result()
    return list_exam

def main(config):
    do_something(config['param1'], config['param2'])

你可以这样写b.py

import a

def b():
    list_exam = a.do_something(config['param1'], config['param2'])

不要忘记在该目录中创建一个__init__.py 文件。

【讨论】:

    【解决方案2】:

    您可能想使用 sys.argv 来获取命令行参数。 看看这个:https://www.pythonforbeginners.com/system/python-sys-argv

    但是,也许您的问题已经在这里得到解答: Passing a List to Python From Command Line

    【讨论】: