【发布时间】:2020-09-09 02:10:05
【问题描述】:
在 ipython 单元格中,您可以执行以下 shell 命令:
ipython:
print("asdf")
!echo asdf
但是,如果您尝试从文件中导入此代码,
asdf.py:
def asdf():
print("asdf")
!echo asdf
ipython:
from asdf import asdf
它会导致错误。
!echo asdf
^
SyntaxError: invalid syntax
其用例是在 google colab 中使用 ffmpeg、wget、mount 等重复的大量脚本
虽然您可以使用 os.system 或子进程,但它们在提供实时标准输出方面没有那么互动。
【问题讨论】:
-
这是一个 ipython 功能。一般情况下,您不能在 Python 中使用
!语法。 -
你的问题究竟是什么?
-
Imo 这可能是不可能的,因为 Ipython 魔术只发生在交互式 shell 中,在输入传递给 python 解释器之前。这不是 import 语句的情况。
-
@mkrieger1,我想知道如何重用(例如通过导入)使用 ipython 魔法的代码。我更喜欢使用它,因为执行 shell 命令的 os.system 和 subprocess 方法不提供交互式/实时输出。
标签: python shell ipython python-import ipython-magic