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物件,這個物件有兩個輸入參數descriptionformatter_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指令,把parserbeta的參數透過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裡。

results matching ""

    No results matching ""