从IPython运行组合shell脚本(非交互式)

时间:2016-05-22 11:45:22

标签: shell scripting ipython

是否有可能以非交互方式运行扩展 IPython(可以在交互式控制台中使用,参见示例)作为脚本? 我没有在任何地方找到它。

示例:

#!/magical/ipython/command --that-i-want
from __future__ import print_function
d = !date +%s
!echo $d.s $(($d.s / 1000))

files = !ls -A
for i, f in enumerate(files):
    print("File number %s is '%s'" % (i, f))

预期输出应为:(复制和粘贴到IPython交互式控制台的结果)

1463917269 1463917
File number 0 is '.ipynb_checkpoints'
File number 1 is 'file1.txt'
File number 2 is 'file2.txt'

当shebang ipython时,它失败了:

d = !date +%s
    ^
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:1)

您可以运行此文件。

vi shebang.py

get_ipython().run_cell("""
from __future__ import print_function
d = !date +%s
!echo $d.s $(($d.s / 1000))

files = !ls -A
for i, f in enumerate(files):
    print("File number %s is '%s'" % (i, f))
""")

ipython shebang.py

答案 1 :(得分:1)

使用.ipy扩展名命名您的文件,并且IPython将能够使用(大多数)语法扩展来运行它。

虽然IPython所做的一切都是只是语法糖,但你可以用纯Python来做。

(也请使用Python 3)