2013-06-01 28 views
2

我一直在玩IPython和它的執行shell命令的能力,前綴爲!。我碰到的是可以通過下面的例子說明了一個問題: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 

我的印象是,在{...}包裹蟒蛇變量的名字,讓我追加的東西它沒有一個空白之間。追加本身的作品,但顯然${filename}不同$filename IPython。

爲什麼會這樣,以及如何在shell調用過程中將某些東西附加到python變量的值?

回答

2

我發現我的錯誤:在保護{...}前沒有$

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

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

+0

我覺得有趣的是'$ {文件名}'擴大隻是其擴展名。你找到一個理由嗎? – MattDMo

+1

是的,'{filename}'被擴展爲'mytxtfile.txt' shell收到'$ mytxtfile.txt','$ mytxtfile'被shell擴展爲無。例如嘗試'filename =「PATH」'。 – Matt

+0

@Matt - 我明白了,我只是想知道爲什麼'$ {filename}'擴展到文件的後綴。這只是一種非直觀的,這就是所有...... – MattDMo