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

Kur*_*ehr 4 glob ipython

在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.
Run Code Online (Sandbox Code Playgroud)

建议?谢谢!

min*_*nrk 8

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

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

filenames?更多的信息在IPython中.

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

filenames = !ls *.sbet
run sbet.py $filenames.s
Run Code Online (Sandbox Code Playgroud)

如果你有一个常规列表,那么在传递给run之前你需要自己把它变成一个字符串:

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 Code Online (Sandbox Code Playgroud)

传递给if 时,您可能会自动扩展文件globs 的功能请求.%runrun foo.py *.sbet