запустить из ipython с расширением стиля glob? - PullRequest
4 голосов
/ 22 ноября 2011

В ipython (0.10.2) я хотел бы работать с расширением в стиле оболочки bash (или 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 Ответ

8 голосов
/ 23 ноября 2011

Возвращение filenames = !ls *.sbet - это специальный список с несколькими дополнительными атрибутами:

  • filenames.l - список
  • filenames.s - строка, разделенная пробелами
  • filenames.n - строка, разделенная новой строкой

do filenames? в IPython для получения дополнительной информации.

Чтобы передать аргументы для запуска, вы хотите 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 вам подходит.

...