最相关的问题是:在Ipython中,如何将参数传递给单元格,就好像它是它自己的脚本一样?
我正在编写一个ipython笔记本来进行模拟,然后在截图中创建一个动画。我这样做的方法是用魔术命令运行一个单元格
%%script pvpython因为截视有自己的解释器。问题是,我需要它将vtu文件的目录作为参数传递给它(这是IPython内核中的一个变量)。到目前为止,我还没有弄清楚这一点。我试过:
%%script pvpython path/to/files
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo')
args = parser.parse_args()
print(args.foo)但这会产生一个错误:` not未知参数: path/ to /files,因为参数被传递给魔术命令,而不是python脚本。有办法绕过这件事吗?
编辑:,这与链接问题不同,因为我使用的是单元格魔术,而不是行魔术。我希望我的所有代码都能单独在笔记本上看到。
发布于 2020-08-09 19:34:27
我不太记得我是在哪里找到这个的,而且它似乎没有被记录下来,但是这对于细胞魔法来说是非常有用的特性。
这不是python格式化机制,它是用于从!开始的行魔法内插的jupyter内插。注意不小心引用的变量中没有引号。
第1室:
simple_var = 123
crazy_var = " with spaces \n 'asdf' $DOLLAR$$ $$SIGNS$$ "
import shlex
tamed_var = shlex.quote(crazy_var)第2室:
%%bash -s '{simple_var}' {tamed_var} '{crazy_var}'
echo $#
for i in $(seq 1 $#) ; do
echo "$i: ${!i}"
done单元2输出:
3
1: 123
2: with spaces
'asdf' $DOLLAR$$ $$SIGNS$$
3: with spaces
asdf $DOLLAR$$ $$SIGNS$$ 另外,脚本表单也是计时bash单元格的一种方便的方式:%%script time bash -s '{simple_var}' {tamed_var} '{crazy_var}'将是上面所述的替代。
这些文档是这里,但它们没有深入了解%%script的功能。但是,基于这种行为,jupyter将单元格的其余部分作为标准输入提供。这很有趣,因为它说“%脚本基本上是shebang",但事实并非如此(否则我们就不需要bash的-s了)。因此,在您的例子中,您用script pvpython替换了我上面使用的script pvpython魔术。
https://stackoverflow.com/questions/51732145
复制相似问题