【Python】 設定檔相對路徑&軟體自動執行的工作目錄

來源:互聯網
上載者:User

標籤:靈活   自動   軟體   pre   操作   path   缺陷   color   上線   

  今天對監控指令碼做了一些變更,然後突然發現監控全部都失效了。。排查了半天問題仍然不知所蹤。最終發現居然是一個踩過好幾次的老坑。。

  就是指令碼內寫的設定檔為了調試方便寫成了相對路徑,但是在上線時沒有意識到軟體自動執行(比如Zabbix的externalcheck,雖然所有指令碼都可以放在統一的目錄下,給人一種這個目錄就是zabbix執行外部檢查時的工作目錄的錯覺,但是實際上並不是。。)時自動執行的工作目錄並不一定是目前的目錄。介於這個坑已經踩過多次,下面給出執行個體和解決辦法:

import ConfigParsercf = ConfigParser()CONF_FILE = ‘server.conf‘    #在本地寫指令碼時為了調試方便,在指令碼同目錄下建立了一個設定檔進行配置cf.read(CONF_FILE)#下面對CONF_FILE做一些處理#同樣的指令碼,讓zabbix自己去跑就報錯了???然後登上目錄自己手動執行,又沒問題???就是路徑的鍋!#把路徑改成絕對路徑就OK了CONF_FILE = ‘/usr/lib/zabbix/externalscripts/server.conf‘

  仔細想一下,這個鍋其實也是ConfigParser這個模組本身的一個小“缺陷”吧。因為ConfigParser.ConfigParser().read(path)的時候,即便path不存在也不會報錯。如果報錯了的話,我們就可以很快定位問題了。所以切記切記,用ConfigParser之前一定要os.path.isfile(path)檢查一下!

  

  如果想要保留設定檔和指令碼在移植上的靈活性,可以這樣搞:

work_dir = os.path.dirname(os.path.abspath(__file__))CONF_FILE = os.path.join(work_dir,‘server.conf‘)#這樣就既可以保證CONF_FILE的絕對路徑,又不會寫死了。

  類似的這種操作寫過很多次,就不再重複了。

【Python】 設定檔相對路徑&軟體自動執行的工作目錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.