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

Unn*_*nni 27 python ipython command-line-arguments jupyter-notebook

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

py_var="foo"
!grep py_var bar.txt
Run Code Online (Sandbox Code Playgroud)

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

Unn*_*nni 51

使用a作为变量名称的前缀$.

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

dir_path = "/home/foo/bar"
!cp file1 $dir_path
Run Code Online (Sandbox Code Playgroud)

来自Ipython或Jupyter笔记本

  • 如果变量中有空格,请不要忘记添加引号!。例如,如果是`dir_path = "/home dir/foo/bar"`,请使用这样的引号:`!cp file1 "$dir_path"`。这会向 bash 命令添加引号。 (4认同)
  • Colab 用户仅供参考:**`{variable}` 符号对于 Google Colab 笔记本的工作方式不同**。如果您的 python“变量”包含空格或任何破坏 cmd 行命令的内容,您仍然需要将其括在引号中。所以 `!cp file1 "{dir_path}"`。添加多个变量的值确实有效 - 但如果可能有空格,则需要在其周围加上引号: `!cp "{filename + filename}" "/content/drive/My Drive/"` (3认同)
  • 尽管`!cp file1 $ dir_path`和`!cp file1 {dir_path}`的结果相似,但是我发现使用`$`有点冒险,因为使用`{}`,您可以连接路径,类似于`!! cp file1 {folder + dir_path}`,而`!cp file1 $ folder + $ dir_path`删除所有`folder`文件。小心。 (2认同)

slo*_*oik 8

您也可以使用此语法:

path = "../_data/"
filename = "titanicdata.htm"
! less {path + filename}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

10645 次

最近记录:

6 年,4 月 前