A「設置文件」將是那裏的東西,如「背景顏色」,「執行速度」,「X的數」定義的文件。目前,我將它作爲一個單獨的setting.py
文件實施,我在開始時導入該文件。有人告訴我,我應該使它成爲settings.ini
文件,但我不明白爲什麼!謹慎澄清,最佳選擇是什麼?如何實現的Python程序中設置文件
回答
沒有最佳解決方案;這是一個優先選擇的問題。*
通常情況下,設置不需要用圖靈語言來表達:它們通常只是一堆標誌和選項,有時候是字符串和數字等。有一個settings.py
文件(雖然非常非傳統)將是,如果最終用戶需要編寫代碼來生成非常深奧的配置(例如遊戲地圖)。這將與shell腳本.bashrc
風格的文件非常相似。
但同樣,在計劃99.9%,設置往往只是一堆標誌和選項,有時字符串和數字等。它的優良它們存儲爲JSON或XML。它還可以輕鬆地對設置執行反射:例如,以樹狀方式自動列出它們,或自動創建描述外的GUI。
(也可能是一個(不太可能)的安全問題,如果你允許人們通過修改設置文件將代碼注入?)
*編輯:沒有雙關語意...
一將設置文件作爲Python模塊的問題在於它可以包含在導入時將執行的代碼。這可能允許將惡意代碼插入到您的程序中。
爲什麼從主代碼庫中分離出配置文件是一個好主意。當然這取決於你的用例,你應該評估你的用例。
配置可由不懂編程語言的最終用戶管理。將配置分解並使用簡單的
ini
文件使用簡單的鍵值對來配置參數更有意義。配置因安裝環境而異。您的代碼在多個環境中運行,並且它們都使用不同的配置。通過在這些環境中安裝單獨的配置文件和相同的源代碼來維護這種情況非常容易。
有包經理們知道什麼是一個配置文件,什麼是源文件。它們是智能的,不會覆蓋版本升級等任何更改的配置。因此,您不必擔心在軟件包版本升級後重置配置參數。例如,您使用默認的配置文件運送您的產品。用戶微調了幾個參數。您運送了另一個版本的軟件包。用戶不應該期望版本升級後重置配置。
對於Python使用股票庫:
YAML風格的配置文件:
http://www.yaml.org/start.html
http://pypi.python.org/pypi/PyYAML/
(例如所使用的谷歌應用程序引擎)
INI:http://docs.python.org/library/configparser.html
不要將XML用於手動編輯的配置文件。
- 1. 在python程序中實現文件?
- 2. 如何在Android應用程序中實現配置文件?
- 3. 如何設置jQuery文件上傳?如何實現上傳處理程序?
- 4. 如何設置python始終包含我的實用程序文件目錄
- 5. 如何在python中設置程序?
- 6. 如何使用MVC在iOS應用程序中實現設置
- 7. 如何通過python中的配置文件設置多個處理程序?
- 8. 如何實現禁用的應用程序設置?
- 9. python/django程序的國際化:如何在.po文件中實現佔位符?
- 10. 如何設置現有的Explorer.exe實例來選擇文件?
- 11. 如何用Python設置文件的ctime?
- 12. 如何在CMake中設置STL實現?
- 13. 如何在admin中實現設置?
- 14. 設置關係的Python實現
- 15. 如何在Python PyQt4中設置現有MainWidnow的中心部件?
- 16. 如何在文件系統驅動程序中實現IOCTL_REDIR_QUERY_PATH?
- 17. 如何在Python中實現線程socket.recv()?
- 18. 如何在我的套接字Python程序中實現秒錶
- 19. 如何實現配置和設置?
- 20. 如何實現每批文件回顯開/關設置?
- 21. 如何在實現DialogFragment的類中設置textview文本
- 22. 如何在應用程序配置文件中設置圖像文件路徑?
- 23. 在基於鈦的iOS應用程序中實現設置
- 24. 將API實現到Python程序中
- 25. GAE python:如何在應用程序yaml中配置文件夾?
- 26. Python如何在多個python文件中設置全局記錄器設置?
- 27. 查找程序/文件的位置Python
- 28. 如何從VBScript中獲取程序文件環境設置
- 29. **如何在Python中實現?
- 30. 如何設置python上的zip文件的文件夾目標?
如果你決定去了'.ini'路線,看看http://docs.python.org/library/configparser.html – lvc
我不認爲存儲配置的詳細信息是一個不好的做法,因爲這樣。一些衆所周知的實用工具如IPython [1]和rope [2]使用python文件來存儲配置細節。 1. http://ipython.org/ipython-doc/rel-0.12.1/config/overview.html#configuration-objects-and-files 2. http://rope.sourceforge.net/overview.html #ropeproject文件夾 – sateesh