0

我真的很喜欢在 iPython中使用系统 shell 命令。但我想知道是否可以循环从调用 eg 的返回值!ls。这有效:

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
4

1 回答 1

1

不,这是不可能的,语法var = !something在 IPython 中是特殊的。它不是有效的 python 语法,我们不会扩展 for 循环等来使用它。

您可以像在第一个示例中展示的那样进行分配,但是使用 glob、os 和其他真正的 python 模块来做到这一点会更健壮,不会更难,并且也可以在 IPython 之外工作......

对于轶事,Guido 上次在 SciPy2013 上看到 IPython 半壳语法时真的不满意。

(请在 IPython 中将 I 大写。)

于 2013-10-28T09:58:16.840 回答