簡體   English   中英

存儲python腳本配置的合適方法

[英]Suitable ways to store python script configurations

我有一個Python腳本,需要在Windows cmd.exe中運行以進行一些測試,它有三個選項可供選擇

配置A

配置B

配置C

因此,用戶可以通過運行xx.py configA選擇不同的配置,腳本將使用config A作為選項,直到用戶指定另一個配置。

由於某些原因,我的程序未使用for循環來跟蹤配置狀態,因此,根據研究,我可以選擇三個選項

  1. 刪除A使用但BC不使用的單個文件,並且對B和C執行類似的過程(配置A,B和C將使用不同的可執行文件來運行相同的文件)

樣例代碼如下:

if os.environ.get('xx'):
    path_a = os.path.join('xx','xx.dll')
    if os.path.isfile(path_a):
        os.remove(path_a)

2.另一個想法是使用本地文件通過檢查文本文件中的特定文本並決定選擇哪個可執行文件來跟蹤配置

3.第三個想法是為此腳本創建一個注冊表項,並對其進行跟蹤

我的問題是我應該采用哪種方法,而其他任何更好的方法也可以達到相同的結果。

據我了解,您在問以下問題:

我的python腳本使用三個不同的參數之一來處理運行的最佳方式是什么,這些參數指向運行期間要使用的配置設置。

如果是這種情況,那么我認為您應該將xml.etree作為選項來存儲和訪問配置文件中的配置數據。 這樣您只需要一個配置文件,因為您可以將具有配置設置的不同節點用作每個配置選項的子級。

您可以將配置保存為這種格式的文件;

<configroot>
    <configsettings1>
        <option1>foo</option1>
        <option2>bar</option2>
    </configsettings1>
    <configsettings2>
        <option1>foo</option1>
        <option2>foo</option2>

等等。 您甚至可以通過向每個選項添加更多數據來對其進行更多自定義:

<option1 disabled=True>

要么

<option2 active=1 type='foo'>

然后您可以根據getopt使用的args從中提取節點

import getopt
import xml.etree as et

INSERTMAINCODEHERE

if __name__ == '__main__':
    try:
        opts, args = getopt.getopt(sys.argv[1:], "f:", ["configoption="])


    except getopt.GetoptError, e:
        print "getopt.GetoptError: %s" % e
        sys.exit(1)

    for o, a in opts:
        if o in ("-f","--configoption="):
            b=et.ElementTree.parse('configfilename')
            options=b.getroot().find(a)
            for s in list(options):
                print s, s.tag, s.tail, s.attrib #ETC. ETC.

您可以在此處查看更多信息和一些詳細信息

我希望這就是你的要求。 如果沒有,請讓我知道更多,我會盡力幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM