IPython:在shell调用中保护{}括号
我一直在玩IPython,它能够执行以IPython:在shell调用中保护{}括号,ipython,Ipython,我一直在玩IPython,它能够执行以为前缀的shell命令。我遇到了一个可以通过以下示例说明的问题: In [1]: filename="mytxtfile.txt" In [2]: !echo $filename mytxtfile.txt In [3]: !echo ${filename}.bak .txt.bak In [4]: !echo ${filename} .txt 我的印象是,将python变量的名称包装在{…}中,这样我就可以在其中添加一些东西,而不需要中间有空格。附
为前缀的shell命令代码>。我遇到了一个可以通过以下示例说明的问题:
In [1]: filename="mytxtfile.txt"
In [2]: !echo $filename
mytxtfile.txt
In [3]: !echo ${filename}.bak
.txt.bak
In [4]: !echo ${filename}
.txt
我的印象是,将python变量的名称包装在{…}
中,这样我就可以在其中添加一些东西,而不需要中间有空格。附加本身可以工作,但显然${filename}
与IPython中的$filename
不同
为什么会这样?在shell调用期间,我如何向python变量的值追加内容?我发现了我的错误:在{…}
前面没有$
In [5]: !echo {filename}.bak
mytxtfile.txt.bak
参考资料:我认为有趣的是,${filename}
只扩展到它的扩展名。找到原因了吗?是的,{filename}
被扩展为mytxtfile.txt
shell接收$mytxtfile.txt
,并且$mytxtfile
被shell扩展为零。例如,试试filename=“PATH”
。@Matt-我明白了,我只是想知道为什么${filename}
会扩展到文件的后缀。这只是一种非直观的,仅此而已…@MattDMo我解释的${filename}
=>$myfile.txt
但是$myfile
='
所以$myfile.txt
.txt
其中=/code>由IPython扩展而
由shell扩展…@Matt现在我明白了。很抱歉,有点闷:)