【问题标题】:Running a Python script from the Python Shell从 Python Shell 运行 Python 脚本
【发布时间】:2019-06-08 00:44:37
【问题描述】:

我编写了一个脚本并将其保存为 test.py(代码如下所示)。当我从脚本(运行模块 5)运行它时,我会在 Python Shell 中得到结果。

但我已经尝试了多种在线可用的建议,让它从 Python Shell 运行,而不是我失败了(下面粘贴了一个错误)。

如何从 python shell 运行 python 脚本? 我正在运行的 Python 版本是 3.7.3,并且在 Windows 中。

#!/usr/bin/python3

print(" Hello, world!")

exec(open(test.py).read())

输出:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    exec(open(test.py).read())
NameError: name 'test' is not defined

【问题讨论】:

  • 永远不要使用exec()。只需从文件中删除该行即可。
  • 只做“导入测试”。
  • @MisterMiyagi 在 cmets 中使用反引号。
  • @Code-Apprentice 许多移动键盘不能“正确”操作。
  • @MisterMiyagi Gotchya!我的 android 键盘有一个反引号键,但我花了很长时间才找到它。我敢肯定,美国以外的键盘应用程序会更加困难

标签: python


【解决方案1】:

运行它不需要最后一行。您只需要:

!/usr/bin/python3

print(" Hello, world!")

如果您想从另一个文件运行它,请不要使用 exec。而是导入它。

import test

【讨论】:

  • 我做到了。它奏效了。它完全合法吗?正如我所想,导入是针对模块的?在 python shell 中导入脚本是否有效?谢谢。
  • 这绝对比在另一个文件上使用 exec 更合法。导入可用于运行模块或包。一个模块基本上只是一个 python 脚本,所以是的,它确实可以导入 python 脚本。
  • 或者,让我这样说 - 这样做最合法的方式是什么 - 如果有这样的事情吗?谢谢。
【解决方案2】:

您需要将“test.py”作为字符串传递(使用引号)。 test 不是已知对象。

【讨论】:

  • 虽然这可能有效(取决于当前工作目录),但最好完全删除 exec() 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2015-10-15
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
相关资源
最近更新 更多