在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.
连连呢?谢谢!
答案 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。