簡體   English   中英

IPython 筆記本:使用引號(') 和美元($) 將字符串變量作為參數傳遞給命令行中的python 腳本(!) | 例如:abc.py -arg1 '$var1'

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM