使用glob样式扩展从ipython运行?

时间:2011-11-22 13:36:01

标签: ipython glob

在ipython(0.10.2)中,我想运行bash shell样式(或glob.glob)扩展。我想做类似这样的事情,并且如果我在bash中那样扩展出来的话。这可能吗?

filenames = !ls *.sbet
run sbet.py $filenames
# fails because filenames is a list

# or the simpler case:
run sbet.py *.sbet
# failes with "*.sbet" being directly passed in without being expanded.

连连呢?谢谢!

1 个答案:

答案 0 :(得分:8)

filenames = !ls *.sbet的返回是一个特殊列表,有一些额外的属性:

  • filenames.l - 列表
  • filenames.s - 以空格分隔的字符串
  • filenames.n - 以换行符分隔的字符串

在IPython中执行filenames?以获取更多信息。

所以要传递args来运行,你需要filenames.s

filenames = !ls *.sbet
run sbet.py $filenames.s

如果你有一个常规列表,那么你需要自己把它变成一个字符串,然后才能运行:

filenames = glob.glob('*.sbet')
filenames_str = ' '.join(filenames) # you will need to add quotes if you allow spaces in filenames
run sbet.py $filenames_str

如果%run对您有价值,则传递给run foo.py *.sbet时,您可以自动展开文件全局feature request