是否有可能在交互模式下执行 Python 脚本

Posted

技术标签:

【中文标题】是否有可能在交互模式下执行 Python 脚本【英文标题】:Is there a possibility to execute a Python script while being in interactive mode 【发布时间】: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 访问它们。这在尝试使用代码或事后分析行为时非常方便。 【参考方案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 命令。希望够了。

【讨论】:

以上是关于是否有可能在交互模式下执行 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

判断 Python 是不是处于交互模式

在 Python 脚本中检查交互式 shell

python import 以交互方式工作,但不是来自脚本

Python 基础语法

在交互模式下在python中执行多行语句

python中命令行模式和交互模式