存储python脚本配置的合适方法

时间:2014-04-02 10:03:32

标签: python python-2.7 registry subprocess

我有一个需要在Windows cmd.exe中运行的python脚本进行一些测试,它有三个选项可供选择

,例如

  

配置A

     

配置B

     

配置C

因此用户可以通过运行xx.py configA来选择不同的配置,脚本将使用配置A作为选项,直到用户指定另一个配置。

由于某些原因,我的程序不使用for循环来跟踪配置的状态,因此根据我的研究我有三个选择

  1. 删除A使用的单个文件,但B C没有,并且用B和C完成类似的过程(配置A,B和C将使用不同的可执行文件来运行相同的东西)
  2. 示例代码如下:

    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.第三个想法是为此脚本创建一个注册表项并跟踪该

    我的问题是我应该采用哪种方式,并且还有其他更好的方法可以达到相同的效果。

1 个答案:

答案 0 :(得分:1)

据我所知,你问的是:

我的python脚本使用指向在该运行期间使用的配置设置的三个不同参数之一来处理运行的最佳方法是什么。

如果是这种情况,那么我认为您应该将xml.etree视为在配置文件中存储和访问配置数据的选项。你应该只需要1个配置文件,因为你可以使用配置设置的不同节点作为每个配置选项的子节点。

您可以将此配置保存为此格式的文件;

<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.

您可以查看有关详细信息here

的更多信息和详细信息

我希望这就是你所要求的。如果没有,请让我知道更多,我会尽力帮助。