web-dev-qa-db-fra.com

Passer des variables IPython comme arguments aux commandes bash

Comment puis-je exécuter une commande bash à partir du bloc-notes Ipython/Jupyter en passant la valeur d'une variable python comme argument comme dans cet exemple:

py_var="foo"
!grep py_var bar.txt

(évidemment, je veux grep pour foo et non la chaîne littérale py_var)

43
Unni

Préfixez vos variables noms avec un $.

Exemple

Supposons que vous souhaitiez copier un fichier file1 vers un chemin stocké dans une variable python nommée dir_pth:

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

depuis le cahier Ipython ou Jupyter

MODIFIER

Grâce à la suggestion de Catbuilts, si vous souhaitez concaténer plusieurs chaînes pour former le chemin, utilisez {..} au lieu de $..$. Une solution générale qui fonctionne dans les deux situations consiste à s'en tenir à {..}

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

Et si vous voulez concaténer une autre chaîne sub_dir vers votre chemin, puis:

!cp file1 {dir_path + sub_dir}
65
Unni

Vous pouvez également utiliser cette syntaxe:

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