Tak*_*oda 6 python ipython paraview
与这个问题最相关的问题是:在Ipython中,如何将参数传递给单元格,就像它是自己的脚本一样?
我正在编写一个ipython笔记本进行模拟,然后在paraview中创建动画。我这样做的方法是使用magic命令运行单元
%%script pvpython
Run Code Online (Sandbox Code Playgroud)
因为paraview有自己的解释器。问题是我需要它将vtu文件的目录作为参数传递给它(这是IPython内核中的变量)。到目前为止,我还无法弄清楚这一点。我试过了:
%%script pvpython path/to/files
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo')
args = parser.parse_args()
print(args.foo)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误:`未知参数:path / to / files,因为该参数被传递给了magic命令而不是python脚本。有办法解决这个问题吗?
编辑:这不同于链接的问题,因为我使用的是单元魔术而不是线魔术。我希望将所有代码单独在笔记本中可见。
我不太记得在哪里找到这个,而且似乎没有记录,但这对于细胞魔法来说是一个非常有用的功能。
这不是 python 格式化机制,它与用于以 . 开头的行魔法插值的 jupyter 插值相同!
。请注意,粗心引用的变量中没有引号。
单元格 1:
simple_var = 123
crazy_var = " with spaces \n 'asdf' $DOLLAR$$ $$SIGNS$$ "
import shlex
tamed_var = shlex.quote(crazy_var)
Run Code Online (Sandbox Code Playgroud)
单元 2:
%%bash -s '{simple_var}' {tamed_var} '{crazy_var}'
echo $#
for i in $(seq 1 $#) ; do
echo "$i: ${!i}"
done
Run Code Online (Sandbox Code Playgroud)
单元 2 输出:
3
1: 123
2: with spaces
'asdf' $DOLLAR$$ $$SIGNS$$
3: with spaces
asdf $DOLLAR$$ $$SIGNS$$
Run Code Online (Sandbox Code Playgroud)
顺便说一句,脚本形式也是对 bash 单元进行计时的便捷方法:%%script time bash -s '{simple_var}' {tamed_var} '{crazy_var}'
将是上面的替代品。
文档在这里,但他们没有深入探讨具体内容%%script
。不过,根据这种行为,jupyter 似乎将单元格的其余部分作为标准输入。这很有趣,因为它说“%%script is basic shebang”,但事实并非如此(否则我们就不需要 bash 了-s
)。因此,在您的情况下,您可以将bash -s
我上面使用的魔法替换为script pvpython
.
归档时间: |
|
查看次数: |
439 次 |
最近记录: |