Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储python脚本配置的合适方法_Python_Python 2.7_Registry_Subprocess - Fatal编程技术网

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

存储python脚本配置的合适方法,python,python-2.7,registry,subprocess,Python,Python 2.7,Registry,Subprocess,我有一个python脚本,需要在Windows cmd.exe中运行以进行一些测试,它有三个选项可供选择 比如 配置A 配置B 配置C 因此,用户可以通过运行xx.py configA选择不同的配置,脚本将使用配置A作为选项,直到用户指定另一个配置 由于某些原因,我的程序不使用for循环来跟踪配置的状态,所以根据我的研究,我有三个选项可供选择 删除一个A使用但B C不使用的文件,并对B和C执行类似的过程(配置A、B和C将使用不同的可执行文件来运行相同的东西) 示例代码如下: if os.envi

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

比如

配置A

配置B

配置C

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

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

  • 删除一个A使用但B C不使用的文件,并对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作为在配置文件中存储和访问配置数据的选项。这样您应该只需要1个配置文件,因为您可以将具有配置设置的不同节点用作每个配置选项的子节点

    您可以将配置保存在此格式的文件中

    <configroot>
        <configsettings1>
            <option1>foo</option1>
            <option2>bar</option2>
        </configsettings1>
        <configsettings2>
            <option1>foo</option1>
            <option2>foo</option2>
    
    你可以看到更多的信息和一些细节


    我希望这就是你要问的。如果没有,请告诉我更多信息,我会尽力提供帮助。

    这会引入一个xml文件,使配置过程变得更复杂,我只需使用一个临时文件来存储当前配置,然后验证,与使用临时文件相比,使用它有什么好处?我一直更喜欢静态配置文件,因为我通常会反复运行代码。设置xml需要一点时间,但一旦保存了设置,就不必担心再次设置脚本。每次运行它时,您都会对使用它的目的进行最佳设置。我明白您的意思,感谢您共享此选项。如果使用此选项,我可能需要自动创建xml,而不是手动创建,并且每当用户更改此选项时,我都会更新配置文件。无论如何,XML似乎是一个很好的选择。
    <option1 disabled=True>
    
    <option2 active=1 type='foo'>
    
    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.