是否有可能在交互模式下执行 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 myscript
和myscript.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 脚本的主要内容,如果未能解决你的问题,请参考以下文章