python命令行傳參數
『壹』 python中pip命令的參數有哪些呢
pip安裝第三方庫
命令:pip install 庫名
pip安裝會拉取最新版本安裝,想安裝任意版本則可加上版本號
命令:pip install 庫名=版本號
查看pip版本 :pip -V
pip升級第三方庫版本
命令:pip install --upgrade 庫名
pip自己升級到最新版本
命令:pip install --upgrade pip
查看安裝庫的詳細信息
命令:pip show 庫名
查看已經安裝的第三方庫
pip list --outdated
卸載第三方庫
命令:pip uninstall 庫名
『貳』 Python3腳本傳參實戰(2個方法3個傳參列表的案例)
在一些測試平台對接時或者用例執行時,或多或少會用到Python腳本傳參的問題。
test.py腳本
#!/usr/bin/python3
import sys
print ('參數個數為:', len(sys.argv), '個參數。')
print ('參數列表:', str(sys.argv))
print ('腳本名:', str(sys.argv[0]))
print ('第一個參數:', sys.argv[1])
執行python3 test.py arg1 arg2 arg3
參數個數為: 4 個參數。
參數列表: ['test.py', 'arg1', 'arg2', 'arg3']
腳本名: test.py
第一個參數: arg1
test.py腳本
#!/usr/bin/python3
import argparse
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--name', '-n', help='name屬性,非必要參數')
parser.add_argument('--year', '-y', help='year 屬性,非必要參數,但有默認值', default=2017)
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.year, args.name, args.body)
查看幫助python3 test.py --help
usage: test.py [-h] [--name NAME] [--year YEAR] --body BODY
Test for argparse
optional arguments:
-h, --help show this help message and exit
--name或-n NAME name屬性,非必要參數
--year或-y YEAR year屬性,非必要參數,但有默認值
--body或-b BODY body 屬性,必要參數
執行python3 test.py --year 2021 -n robot --body "are you ok?"
2021 robot are you ok?
以方法2中的test.py腳本為例
python3 test.py --year 2021 --body [\"test\", \"robot\",\"boy\" ]
2021 ["test", "robot", "boy" ]
以方法1中的test.py腳本為例
python3 test.py [\"test\", \"robot\",\"boy\" ]
參數個數為: 2個參數。
參數列表: ['test.py', '[\"test\", \"robot\", \"boy\" ]']
腳本名: test.py
第一個參數: ["test", "robot", "boy" ]
其實此時傳入的第一個參數是一個字元,需要轉換為列表。
import json
json.loads(sys.argv[1])
test_arg.py腳本
#!/usr/bin/python3
import argparse
import os
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.body)
command=python3 + ' ' + test_sys.py+ ' ' + args.body
print (command)
str=('command')
result=os.system(str)
test_sys.py腳本
#!/usr/bin/python3
import sys
import json
print ('第一個參數:', sys.argv[1])
print ('列表:', json.loads(sys.argv[1]))
執行python3 test_arg.py --body [\"test\", \"robot\",\"boy\" ]
python3 test_sys.py ["test", "robot", "boy" ]
test_sys.py執行報錯,轉json失敗。
還記得我們案例2中,腳本的傳入指定參數和實際傳入參數嘛?
test_arg.py腳本我們稍微優化下,在傳參前先字元替換下。
["test", "robot", "boy" ]轉換為[\"test\", \"robot\",\"boy\" ]即可。
command.replace(' " ' , r ' \" ') 添加到command=之後,再次運行看看呢?
『叄』 Python筆記:命令行參數解析
有些時候我們需要通過命令行將參數傳遞給腳本,C語言中有個getopt()方法,python中也有個類似的租檔命令行參數解析方法getopt()。python也提供了比getopt()更簡潔的argparse方法。另外,sys模塊也可以實現簡單的參數解析,本文將對這3種命令行參數解析方法簡要介紹。
sys.argv是傳入的參數列表,sys.argv[0]是當前python腳本的名稱,sys.argv[1]表示第一個參數,以此類推。
命令行運行:
可以看到傳入的參數通過sys.argv來獲取,它就是一個參數列表。
python的getopt與C語言的的getopt()函數類似。相比於sys模塊,支持長參數和短參數,並對參數解析賦值。但它需要結合sys模塊進行參數解析,語法格式如下:
短參數為單個英文字母,如果必須賦值需要在後面加英文冒號( : ),長參數一般為字元串(相比短參數,更能說明參數含義),如果必須賦值需要在後面加等號( = )。
命令行運行:
注意:短參數(options)和長參數(long_options)不需要一一對應,可以任意順序,也可以只有短參數或者只有長參數。
argparse模塊提供了很多可以設置的參數,例如參數的默認值,幫助消息,參數的數據類型等。argparse類主要包括ArgumentParser、add_argument和parse_args三個方法。
下面介紹這三個函數的使用方法。
argparse默認提供了 -h | --help 參數:
命令行運行:
下面列出部分參數:
下面來添加參數:
命令行運行:
parse_args() 方法用於解析參數,在前面的示例代碼中使用parse_args方法來提取悄悶參數值,對於無效或者錯誤的參數會列印錯誤信息和幫助信息:
命令行運行:
本文介紹了Python的三種命令行參數解析方法sys.argv、getopt和argparse,可以根據自己的需要進行選擇,getopt和argparse兩種方法相比來說,建議選擇argparse,代碼量更少更簡潔。更詳細啟型彎的使用方法參考官方文檔:
--THE END--
『肆』 Python語言命令行參數解析接收參數執行腳本的三種方法
在Windows系統上,Python腳本文件當然雙擊就能直接運行。不過我們往往需要在執行腳本的時候還要添加相應的參數,另外在Ubuntu系統中,我們執行文件往往和其他系統或用戶命令一樣,需要在終端中輸入,參數當然也要一並加上。所以機智客這里說的意思是,執行Python腳本(.py文件)時候需要輸入相應參數,這樣程序怎麼寫的方法。
上面這么說可能有點不明不白的,或者有朋友會用但未必知道命令行解析這種表達方式。舉個例子,比如我們在執行一個腳本文件的時候,可能會在CMD或者終端中輸入python demo.py 10或者python demo.py --separator 10後面這個數字就是參數。我們要編寫這樣的腳本或者函數,有哪些方法呢?這里列舉三種常用的。
一個是用系統模塊sys。引入模塊語句是import sys。也就是Python語言的內置庫中的sys.argv。argv通常有argv[0],argv[1],argv[2]這樣幾個參數。基本使用方法是m_sil_len = int(sys.argv[1])傳入第一個參數,sil_th = int(sys.argv[2])傳入第二個參數。如果是簡單一點的參數或者腳本,我們引入了sys。可以直接用這個傳入參數。
一種是用模塊argparse來實現,這是標准庫中推薦的命令行解析模塊。引入模塊語句是import argparse。基本使用方法是引入模塊後,先parser = argparse.ArgumentParser()創建對象,然後調用方法添加參數parser.add_argument("jzk", help="這是關於參數的說明", type=int),之後args = parser.parse_args()使用解析就可以用了。機智客看到這個方法在很多項目腳本中使用。我們在閱讀機器學習AI之類的開源項目,就會發現很多人用的都是這個方法。
還有一個就是用fire模塊,用於生成命令行界面的工具。引入模塊語言是import fire。它默認以-為參數分隔符的。基本使用方法是fire.Fire()。這個不僅可以做命令行的參數解析,還可以還給一個類class添加命令行。所以使用時候括弧里填入函數名或者類名即可,也就是裡面的參數可以是其他Python對象。
『伍』 Nuke Python 使用命令行
nuke的命令行如何執行python腳本,請聽詳細分解
通過 -t 參數,可以在 python 解釋器中運行 nuke
可在 -t 後添加 啟動腳本:
nuke運行python腳本時,腳本參數通過sys.argv 傳入,例如運行test.py:
在命令行下運行此腳本,查看包含參數
唯一的特例就是,參數以幀號結尾的:
此種情況,1,20被sys.args分開,被保存在了 nuke.tcl('frames all')中查看所有參數:nuke.rawArgs
例如,編輯test.py
結果:
以上腳本運行語法如下:
當在-t python模式下運行nuke時,其不會渲染和執行任何node
想渲染一個節點,就得這樣來:
當以-x 參數運行時,就切換到渲染幀序列模式,用python腳本,而不是nuke腳本(.nk),nuke執行python腳本先,隨後用給定的幀范圍渲染所有的writes。例如運行 convert.py腳本:
現在從命令行運行腳本,將5幀jpegs轉換成tif
『陸』 python如何通過命令行輸入參數
形式一:直接在命令行輸入參數
第一個紅色框為命令行參數
第二個框為控制台模式(Terminal)
形式二:在編譯工具中配置參數
點擊運行:點擊紅色框 編輯配置
如下圖:紅色框即為設置的命令行參數