2013-10-28 48 views
0

我真的很喜歡在iPython中使用use system shell commands。但是我想知道是否可以將呼叫的返回值循環到例如!ls。這工作:內聯iPython調用系統

files = !ls ./*_subcell_cooc.txt 
for f in files: 
    print f 

但這並不:

for f in (!ls ./*_subcell_cooc.txt): 
    print f 

錯誤是:

File "<ipython-input-1-df2bc72907d7>", line 5 
    for f in (!ls $ROOT/*_subcell_cooc.txt): 
      ^
SyntaxError: invalid syntax 
+1

任何理由不使用做這樣FS查詢的'glob'模塊? –

+0

並不多。只是我已經知道並且喜歡shell命令。另外,在該腳本的其餘部分中,我使用其他命令,如'wc'。我將徹底研究'glob' – Renaud

+0

我會承認,當我經歷同樣的遷移時,我在一兩年前就已經處於您的位置。老實說,在過去的幾個月中,我幾乎沒有碰過'bash'幾乎所有的Python腳本(以及一些節點)。 –

回答

1

不,這是不可能的,語法var = !something在IPython的特殊套管。它是而不是有效的Python語法,我們將而不是擴展for循環等來使用它。

你可以做任務,你在你的第一個例子表明,但使用水珠,操作系統和其他真正的Python模塊做將更加強勁,而不是更難,也IPython都在外面工作...

對於軼事Guido對於上次在SciPy2013上看到的IPython半殼語法並不滿意。

(同時它大寫我的IPython請。)