将IPython变量作为参数传递给bash命令

时间:2016-02-19 04:01:48

标签: python ipython jupyter-notebook command-line-arguments

如何从Ipython / Jupyter笔记本执行bash命令,将python变量的值作为参数传递,如下例所示:

py_var="foo"
!grep py_var bar.txt

(显然我想要foo而不是文字字符串py_var

3 个答案:

答案 0 :(得分:35)

使用$添加变量名称前缀。

示例

假设您要将文件file1复制到存储在名为dir_pth的python变量中的路径:

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}

答案 1 :(得分:6)

您也可以使用以下语法:

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

答案 2 :(得分:0)

正如@Catbuilts指出的那样,$是有问题的。为了使其更加明确而不掩盖关键示例,请尝试以下操作:

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

您会得到:

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