Passing IPython variables as arguments to bash commands Passing IPython variables as arguments to bash commands python python

Passing IPython variables as arguments to bash commands


Prefix your variable names with a $.

Example

Say you want to copy a file file1 to a path stored in a python variable named dir_pth:

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

from Ipython or Jupyter notebook

EDIT

Thanks to the suggestion from Catbuilts, if you want to concatenate multiple strings to form the path, use {..} instead of $..$. A general solution that works in both situations is to stick with {..}

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

And if you want to concatinate another string sub_dir to your path, then:

!cp file1 {dir_path + sub_dir}

EDIT 2

For a related discussion on the use of raw strings (prefixed with r) to pass the variables, see Passing Ipython variables as string arguments to shell command


You cans use this syntax too:

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


As @Catbuilts points out, $'s are problematic. To make it more explicit and not bury the key example, try the following:

afile='afile.txt'!echo afile!echo $PWD!echo $PWD/{afile}!echo {pwd+'/'+afile}

And you get:

afile.txt/Users/user/Documents/adir/Users/user/Documents/adir/{afile}/Users/user/Documents/adir/afile.txt