Передача переменных IPython в качестве аргументов для команд bash

Как выполнить команду bash из ноутбука Ipython/Jupyter, передав значение переменной python в качестве аргумента, подобного в этом примере:

py_var="foo"
!grep py_var bar.txt

(очевидно, я хочу, чтобы grep для foo, а не буквальная строка py_var)

Ответ 1

Префикс ваших имен переменных с $.

пример

Допустим, вы хотите скопировать файл file1 в путь, хранящийся в переменной python с именем dir_pth:

dir_path = "/home/foo/bar"
!cp file1 $dir_path

из записной книжки Ipython или Jupyter

РЕДАКТИРОВАТЬ

Благодаря предложению Catbuilts, если вы хотите объединить несколько строк для формирования пути, используйте {..} вместо $..$. Общее решение, которое работает в обеих ситуациях - придерживаться {..}

dir_path = "/home/foo/bar"
!cp file1 {dir_path}

И если вы хотите объединить другую строку sub_dir с вашим путем, то:

!cp file1 {dir_path + sub_dir}

Ответ 2

Вы можете использовать этот синтаксис тоже:

path = "../_data/"
filename = "titanicdata.htm"
! less {path + filename}