[英]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.