【问题标题】:Is there a possibility to execute a Python script while being in interactive mode是否有可能在交互模式下执行 Python 脚本
【发布时间】:2011-06-05 04:42:09
【问题描述】:

通常你可以执行 Python 脚本,例如:python myscript.py,但如果你处于交互模式,如何在文件系统上执行 Python 脚本?

>>> exec(File) ???

应该可以多次执行脚本。

【问题讨论】:

  • 为什么myscript.py 没有适当的“主要”功能?为什么你不能import myscriptmyscript.main()?这是通常的做法。为什么那行不通?你能修复 myscript 以添加适当的“主要”功能吗?
  • 问题是我正在加载“paster shell”,并且在执行此操作时会加载其他项目库。在这个交互式 shell 中,我想尝试一些东西。但是是的,你是对的,你的建议是一个很好的建议
  • 这并没有像你问的那样回答这个问题,但如果它与你或其他人相关,我发现这在我积极开发时很有用:PYTHONSTARTUP=some_script.py python -i。这将执行 some_script.py 并将您放到交互式 shell 中。如果您的工作脚本定义了局部变量,您将能够从 shell 访问它们。这在尝试使用代码或事后分析行为时非常方便。

标签: python interactive mode


【解决方案1】:

使用execfile('script.py'),但它仅适用于python 2.x,如果您使用的是3.0,请尝试this

【讨论】:

  • 谢谢。我认为这对我有用,并且具有最低配置样板
  • 致我的人(懒人),“这个”链接带你到:exec(open("./filename").read())
【解决方案2】:

不带 .py 扩展名的import file 会执行此操作,但__name__ 不会是"__main__",因此如果脚本进行任何检查以查看它是否以交互方式运行,则需要绕过它们。

或者,如果您想在脚本运行后查看环境,请尝试python -i script.py

编辑:再次加载它

file = reload(file)

【讨论】:

  • Alternately, if you're wanting to have a look at the environment after the script runs try python -i script.py 这是史诗谢谢!
【解决方案3】:

您可能想研究一下IPython,一个更强大的交互式shell。它有各种“神奇”命令,包括%run script.py(当然,它会运行脚本并留下它定义的任何变量供您检查)。

【讨论】:

  • 这对我不起作用。我无法访问任何变量。难道是我把我的脚本放在了 main() 中?
  • 是的,函数中的局部变量将超出范围。
【解决方案4】:

您也可以使用subprocess 模块。比如:

>>> import subprocess
>>> proc = subprocess.Popen(['./script.py'])
>>> proc.communicate()

【讨论】:

    【解决方案5】:

    您可以使用 python 运行任何系统命令:

    >>>from subprocess import Popen
    >>>Popen("python myscript.py", shell=True)
    

    【讨论】:

    • 子流程不适合这个。您将无法与它的变量进行交互,因为它处于一个完全独立的进程中,您甚至需要另一个命令才能看到它的输出。
    【解决方案6】:

    最简单的方法是使用os 模块:

    import os
    
    os.system('python script.py')
    

    其实os.system('cmd') 用来运行shell 命令。希望够了。

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多