External setup using os.environ and argparse.ArgumentParser
155 os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="GC-AI-Challenge-4dc21e90cad0.json"
156 parser = argparse.ArgumentParser(
157 description=__doc__,
158 formatter_class=argparse.RawDescriptionHelpFormatter)
159
160 parser.add_argument('--beta', dest='beta', action='store_true')
161 parser.add_argument('--no-beta', dest='beta', action='store_false')
162 parser.add_argument('--nr', dest='nr', action='store_true')
163 parser.add_argument('--no-nr', dest='nr', action='store_false')
164 parser.add_argument('--reset', dest='reset', action='store_true')
165 parser.add_argument('--no-reset', dest='reset', action='store_false')
166
167 parser.add_argument('-v', dest='verbose', action='store_true', help='Verbose mode')
168
169 parser.add_argument('--batch_idx', dest='batch_idx', help='[1-60]')
170 parser.add_argument('--batch_size', dest='batch_idx', help='default 25')
171 parser.add_argument('--input_dir', dest='input_dir', help='input wav folder')
172 parser.set_defaults(beta=True, nr=True, reset=False, batch_idx='0', batch_size=25, input_dir='choices(entire)')
173
174
175 args = parser.parse_args()
行155意思是在py檔裡面把"GC-AI-Challenge-4dc21e90cad0.json"加入系統變數"GOOGLE_APPLICATION_CREDENTIALS",效果跟在Terminal裡type export GOOGLE_APPLICATION_CREDENTIALS = GC-AI-Challenge-4dc21e90cad0.json
一樣。
圖1 註解行155後,python 執行的錯誤
圖1呈現把第155行註解掉後,python 執行的結果,可以看到出現DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application,意思是系統沒辦法自動偵測認證,請設定或重新創造驗證檔。
行156-158是透過argparse.ArgumentParser()
產生一個parser
物件,這個物件有兩個輸入參數description
與formatter_class
來設定parser
的格式。
行160-171用parser.add_argument
函數加入新的外部參數--beta
, --no-beta
, --nr
, --no-nr
, --reset
, --no-reset
, -v
, --batch_idx
, --batch_size
, --input_dir
。
行160 add_argument
輸入三個參數--beta
, dest='beta'
, action='store_true
。
--beta
是指在Terminal呼叫這個參數的格式。
dest=beta
是指在parser
物件裡面參數名稱。
action=store_true
是指建立參數時預設的動作,store_true
是設定成True值。
行161跟行160是成對的,透過在Terminal打--no-beta
指令,把parser
裡beta
的參數透過store_false
設定成False值。
行169輸入三個參數--batch_idx
, dest=batch_idx
, help='[1-40]
意思是透過Terminal輸入--batch_idx
指令加上1~40的數字,可以指定batch_idx
的範圍。
行169沒有action
參數,代表輸入的參數格式是字串。
行172呈現透過parser.set_defaults
函數把parser
裡的變數beta
, nr
, reset
, batch_idx
, batch_size
, input_dir
產生一個預設值。如果使用者沒有在Terminal打某個指令的話,程式便會自動使用預設值來執行。
行175呈現透過parser.parse_args
函數,把parser
裡面的變數取出來,存到一個新變數args
裡。