[英]IPython notebook: using quotes(') and dollar($) to pass string variable as argument to python script in command-line(!) | eg: abc.py -arg1 '$var1'
在笔记本单元格的命令行中使用变量时,我看到我们可以使用 $ 在变量前面,或者使用 {} 包围变量,例如
!command {variable}
或者
!command $variable
但是当我使用笔记本单元中的命令行运行 python 脚本时,我会得到错误
variable1 = '/path/to/directory'
variable2 = 7
!Script.py -arg1 $variable1 -arg2 $variable2
和
!Script.py -arg1 {variable1} -arg2 {variable2}
不工作。
经过一些试验,我发现如果一个变量是一个字符串,用引号将整个 arg 括起来就可以了。
variable1 = '/path/to/directory'
variable2 = 7
!Script.py -arg1 '$variable1' -arg2 $variable2
到底是怎么回事? 我试图查找这种现象,但找不到任何东西。
如果它有所作为,我正在使用 google colab colaboratory
你有没有尝试过?
!Script.py -arg1 $variable1\ -arg2 $variable2\
任何以!
开头的输入行字符被逐字传递(不包括!
)到底层命令行界面。 [来源]
之后传递一个字符串变量!
字符将仅传递字符串内容,而不传递'
(引号)符号。 您需要在行中用'
(引号)符号将字符串变量括起来。
使用上面的示例,两个变量:
variable1 = '/path/to/directory'
variable2 = 7
运行此行时:
!Script.py -arg1 $variable1 -arg2 $variable2 #wrong
它会转化为
> Script.py -arg1 /path/to/directory -arg2 7
引号不会传递到命令行。
因此,您需要在字符串变量周围添加引号:
!Script.py -arg1 '$variable1' -arg2 $variable2 #correct
这将转化为
> Script.py -arg1 '/path/to/directory' -arg2 7
引号被传递到命令行。 该命令将正常工作并且您的观察是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.