日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python之环境变量(测试环境可配置)(亲测)

發布時間:2024/9/20 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python之环境变量(测试环境可配置)(亲测) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想要實現的結果是:

  執行腳本時,帶一個參數,由這個參數來決定測試環境(開發or測試),比如:

python test.py dev

?  實現代碼:

  方式1?不用__getitem__方式:

1 import os2 3 class OnlineConfig(object):4 HOST="appapi.5i5j.com"5 class ReleaseConfig(object):6 HOST="appts.5i5j.com"7 8 mapping = {9 "online":OnlineConfig, 10 "release":ReleaseConfig 11 } 12 13 #根據腳本參數,來決定用那個環境配置 14 import sys 15 print(sys.argv) #在終端輸入命令 python conf2.py online, 返回一個列表['conf2.py', 'online'] 16 17 num = len(sys.argv)-1 18 if num<1 or num >1: 19 exit("參數錯誤,必須傳環境變量!比如: python xx.py online|release") 20 env = sys.argv[1] 21 # print(env) 22 APP_ENV=os.environ.get("APP_ENV",env).lower() 23 print("APP_ENV:",APP_ENV) 24 config=mapping[APP_ENV]() 25 26 27 if __name__ == "__main__": 28 print(config.HOST)

解釋一下:

一開始第22行,不明白為什么要使用第22行的語句,

因為直接使用config=mapping[env]()也是可以正確運行的。

后來想明白:mapping的key都是小寫,若有人輸入大寫字母則會匹配不到對應的value。

如下所示:即使輸入了大寫字母,程序也會正確運行

(build) Mac mini:build 5i5j$ python3 changeEnv.py RELEASE ['changeEnv.py', 'RELEASE'] APP_ENV: release appts.5i5j.com

?方式2?使用__getitem__方式:

1 import os2 3 class Config(object):4 '''5 根據給定的環境,返回不同的host6 '''7 8 mapping = {9 'online': 'appapi.5i5j.com', 10 'release': 'appts.5i5j.com' 11 } 12 14 def __getitem__(self, envKey): 15 return self.mapping[envKey] 16 17 #利用腳本參數輸入,獲得運行環境(envKey) 18 import sys 19 # print(sys.argv) #在終端輸入命令 python conf2.py online, 返回一個列表['conf2.py', 'online'] 20 21 #如果多傳參數,或者沒有傳,退出程序,并給出錯誤提示 22 num = len(sys.argv)-1 23 if num<1 or num >1: 24 exit("參數錯誤,必須傳環境變量!比如: python xx.py online|release") 25 env = sys.argv[1] 26 APP_ENV=os.environ.get("APP_ENV",env).lower() 27 # print(APP_ENV) 28 29 30 if __name__ == "__main__": 31 32 # 測試代碼 33 config = Config() 34 print(config[APP_ENV])

在命令行輸入運行命令:python3 changeEnv.py online

1 (build) Mac mini:build 5i5j$ python3 changeEnv.py release 2 appts.5i5j.com 3 (build) Mac mini:build 5i5j$ python3 changeEnv.py online 4 appapi.5i5j.com

可以看到打印的是online所對應的host

?

其它一些知識點?

  os.environ.get()方法表示什么意思? import osJS_ADDRESS = os.environ.get("PALM_JS_ADDRESS") print(os.environ.get("PALM_JS_ADDRESS"))

?  什么是環境變量,環境變量是程序和操作系統之間的通信方式。有些字符不宜明文寫進代碼里,比如數據庫密碼,個人賬戶密碼,如果寫進自己本機的環境變量里,程序用的時候通過os.environ.get()取出來就行了。

  這樣開發人員本機測試的時候用的是自己本機的一套密碼,生產環境部署的時候,用的是公司的公共賬號和密碼,這樣就能增加安全性。os.environ是一個字典,是環境變量的字典。"PALM_JS_ADDRESS"是這個字典里的一個鍵,如果有這個鍵,返回對應的值,如果沒有,則返回none

  

  打印一下os.environ的值,可以看到打印出一個字典

1 print(os.environ) 2 environ({'rvm_bin_path': '/usr/local/rvm/bin', 'TERM_PROGRAM': 'Apple_Terminal', 'SHELL': '/bin/bash', 'TERM': 'xterm-256color', 'TMPDIR': '/var/folders/m2/8_kj4c7s1jbdcc1brnnjs44c0000gn/T/', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.x3UvvJIBTD/Render', 'TERM_PROGRAM_VERSION': '421.2', 'TERM_SESSION_ID': '33B6E14E-3659-4D94-B890-03275B7217F8', 'USER': 'chenpeisong', 'rvm_path': '/usr/local/rvm', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.Dzg1yLGBXd/Listeners', 'rvm_prefix': '/usr/local', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/rvm/bin', 'PWD': '/Users/chenpeisong', 'LANG': 'zh_CN.UTF-8', 'XPC_FLAGS': '0x0', 'XPC_SERVICE_NAME': '0', 'rvm_version': '1.29.9 (latest)', 'SHLVL': '1', 'HOME': '/Users/chenpeisong', 'LOGNAME': 'chenpeisong', 'SECURITYSESSIONID': '186a7', '_': '/usr/local/bin/python3', '__CF_USER_TEXT_ENCODING': '0x1F5:0x19:0x34', '__PYVENV_LAUNCHER__': '/usr/local/bin/python3'}) 3 4 >>> print(type(os.environ)) 5 <class 'os._Environ'>

  查看字典中具體某個key的值:

#不使用get()方法 >>> print(os.environ["rvm_bin_path"]) /usr/local/rvm/bin#使用get()方法 >>> print(os.environ.get("rvm_bin_path")) /usr/local/rvm/bin

?如果環境變量列表中不包含自己輸入的變量名,可以給變量名賦值一個默認值

>>> print(os.environ.get("rvm_bin_path1","23")) 23

?  這個方法是什么意思?

  __getitem__,首先這個方法在python中稱為魔法方法,在創建實例時,會自動調用類中定義的方法__getitem__,輸出在該方法返回的值

  具體使用方法參照這一篇,淺顯易懂?python __setitem__(self)和__getitem__(self)

?

?

  cmd命令uptime是什么意思?

  參照 :https://blog.csdn.net/u014389734/article/details/79392440

  簡單來說:

  望名生義,uptime 命令告訴你系統啟動up了(運行了)多長時間。這是語法:

uptime [options]

?

  多環境配置參照文檔:

https://blog.csdn.net/shykevin/article/details/90103355

來源:https://www.cnblogs.com/kaerxifa/p/11268147.html

總結

以上是生活随笔為你收集整理的python之环境变量(测试环境可配置)(亲测)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。