【问题标题】:Return variable from script?从脚本返回变量?
【发布时间】:2020-10-01 23:25:59
【问题描述】:

我正在尝试从 python 脚本到命令行访问变量。

我用几个参数运行以下命令行:

!python test.py --model I3D_resnet50 --dataset kinetics400

在这个test.py 中有变量Test1。 如果我在test.py 中使用sys.exit(Test1),则只会在命令行中打印值,但我需要将值保存在变量中。

这可能吗?

【问题讨论】:

  • 从您的代码中import 那个模块 (test) 并调用(希望)返回该值的函数而不是在命令行上运行它更容易。这取决于test.py 的写法。
  • 只需将值写入print,而不是sys.exit(这会使您的脚本看起来失败)。 !python 建议您从 Jupyter 笔记本运行命令;我不确定如何在该环境中捕获输出。 (在 shell 中,你可以写 x=$(python test.py python test.py --model I3D_resnet50 --dataset kinetics400).
  • 感谢 chepner,使用此解决方案。 x=!(python test.py --model I3D_resnet50 --dataset kinetics400)variable=x[-1]print(variable)

标签: python variables output


【解决方案1】:

这取决于你的外壳。使用 *nix,您可以执行类似的操作

test.py

var = 'Something'
print (var)

然后在shell中

x=$(python test.py)

x 将是标准输出的任何内容。在这种情况下,

echo $x
Something

如果您在 Windows 中,则需要 this 之类的内容。

【讨论】:

  • !python ... 建议 OP 从 Jupyter 笔记本或至少其他一些非 shell 环境中运行他们的脚本。
  • 是的,在 Google Colab 上运行脚本,但感谢 Wyrmwood,您的解释对我帮助很大。
【解决方案2】:

有一些方法,但大多数都会运行子 shell,因此您将无法访问运行脚本的 shell 中的环境变量。

你只是想看看变量是什么?在这种情况下,您可以使用

import os
os.system('echo '+var_of_interest)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多