在ipython解释器中执行文件

时间:2012-11-13 23:42:08

标签: python file interpreter ipython

我正在尝试在ipython解释器中运行一个文件。 该文档使声音与shell中的ipython file.py或解释器本身内的%run file.py一样简单。但是,我想读取包含ipython“系统shell”命令的文件。这是一个例子:

files= !ls
print files

对于这种类型的命令,如上所述调用解释器会导致SyntaxError,就像它由/usr/bin/python执行一样。

是否可以从系统shell 运行文件,就像它在ipython shell解释器中执行一样?

3 个答案:

答案 0 :(得分:5)

如果您使用.ipy扩展名命名文件,看起来就可以这样做。

sam@blackbird-debian:~
$ cat tmp.ipy
me = !whoami
print me
sam@blackbird-debian:~
$ ipython tmp.ipy
['sam']

答案 1 :(得分:4)

我假设您要从已经运行的IPython会话中执行此操作。可能有一些很多更简单,但我现在想到的只有:

get_ipython().shell.run_cell(open('path/to/commands').read())

另一个疯狂的想法 - 将IPython作为EDITOR=cat ipython启动。现在,您可以使用以下命令从文件加载命令:

%edit -r path/to/commands

但是,对于您的用例,应该有一个真正的魔力。


或者你可以非交互式地做同样的事情(添加-i以进入交互模式):

ipython -c 'get_ipython().shell.run_cell(open("path/to/commands").read())'

答案 2 :(得分:0)

根据您想要做什么,运行

可能就足够了
ipython < file
来自bash的

也就是说,只需将标准输入从您的文件重定向到ipython,以便ipython认为它所获得的命令来自您的键盘。