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