【问题标题】:IPython: Protecting {} brackets in shell invocationsIPython:在 shell 调用中保护 {} 括号
【发布时间】:2013-06-01 20:42:48
【问题描述】:

我一直在使用 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 变量的名称包装在 {...} 中可以让我在其上附加一些内容,而两者之间没有空格。附加本身有效,但显然 ${filename} 与 IPython 中的 $filename 不同

为什么会这样?如何在 shell 调用期间将某些内容附加到 python 变量的值?

【问题讨论】:

    标签: ipython


    【解决方案1】:

    我发现我的错误:保护{...}前面没有$

    In [5]: !echo {filename}.bak
    mytxtfile.txt.bak
    

    参考:http://ipython.org/ipython-doc/stable/interactive/reference.html#manual-capture-of-command-output

    【讨论】:

    • 我认为有趣的是${filename} 仅扩展为它的扩展名。你找到原因了吗?
    • 是的,{filename} 扩展为 mytxtfile.txt,shell 接收 $mytxtfile.txt$mytxtfile 扩展为空。以filename="PATH" 为例。
    • @Matt - 我明白了,我只是想知道为什么 ${filename} 会扩展为文件的后缀。这有点不直观,仅此而已......
    • @MattDMo 我解释的${filename}==>$myfile.txt 但是$myfile=='' 所以$myfile.txt --> .txt 其中==>由IPython扩展和-->shell 扩展...
    • @Matt 好的,我现在明白了。抱歉有点密集:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多