*號作為python指令碼的傳入引數時,必須用單引號'',才能正確傳入。如python test.py 2014 '*' age
python test.py 2014 * age是錯誤的。
比如test.py指令碼如下
import sys
hdfs_report_historical_year = sys.argv[1]
# eg:2014-05,2014-12,etc.
hdfs_report_historical_month = sys.argv[2]
# eg:all,region,citylevel,etc.
pig_script_type = sys.argv[3]
print hdfs_report_historical_year
print hdfs_report_historical_month
print pig_script_type
其列印三個 傳入引數。呼叫命令
python test.py 2014 * age
輸出:可以看到引數* 沒有正確傳入,而是將當前目錄下的檔名一起傳給 sys.argv[2]和 sys.argv[3]。如果想正確傳入要使用'*':python test.py 2014 '*' age
我們可以看*不用單引號會傳入很多引數,test.py增加引數列印如下
import sys
hdfs_report_historical_year = sys.argv[1]
# eg:2014-05,2014-12,etc.
hdfs_report_historical_month = sys.argv[2]
# eg:all,region,citylevel,etc.
pig_script_type = sys.argv[3]
print hdfs_report_historical_year
print hdfs_report_historical_month
print sys.argv[4]
print sys.argv[5]
print sys.argv[6]
print sys.argv[7]
print sys.argv[8]
執行可以看到,當前目錄路徑名基本上都被傳入到指令碼中。
所以要小心
執行指令碼 執行python指令碼時傳入引數的三種方式
如果在執行python指令碼時需要傳入一些引數,例如gpus與batch size,可以使用如下三種方式。sys模組是很常用的模組,它封裝了與python直譯器相關的資料,例如sys.modules裡面有已經載入了的所有模組資訊,sys.path裡面是pythonpath的內容,而sys.ar 則封...
jpython 傳入引數 python中引數傳遞
在程式語言中,函式的引數傳遞有兩種情況 按值型別傳遞 num 10 def double arg arg arg 2 print arg double num 呼叫該函式,傳入乙個變數,其實傳入的是該變數的乙個副本,該變數在函式中發生變化,不影響函式外面該變數。按引用型別 位址 傳遞 def cha...
python 函式 引數傳入分類
1.位置引數 呼叫函式時傳入實際引數的數量和位置都必須和定義函式時保持一致。2.關鍵字引數 好處 不用記住形參位置。所謂關鍵字就是 鍵 值 繫結,呼叫函式時,進行傳遞。特點 位置引數和關鍵字引數混合傳參時,位置引數必須在關鍵字引數的前面,關鍵字引數之間不存在先後順序。3.預設引數 好處 呼叫函式時可...