ConfigParser:每次启动程序时,配置文件都被覆盖--Python

时间:2013-10-20 03:17:50

标签: python configuration

我正在学习一些Python,我有一个我无法解决的问题。 但首先我会说出我想要的东西:

  1. 程序启动时,如果配置文件不存在,请创建一个新文件(“模板配置”)。否则不要做任何事情(软件以后会加载配置文件)。
  2. 当用户更改内容时,需要修改配置文件。
  3. 当用户退出软件时,配置文件必须保持不变。
  4. 嗯,我已经完成的第二步和第三步,因为它们几乎是一样的。我的问题是第一步。现在我的软件创建了一个新的配置文件,如果不存在,但如果该文件已存在(使用配置),我的应用程序将覆盖此“旧”文件并生成我的“模板配置”。

    我想知道如何将其修复到我的软件中如果已存在,请勿覆盖该文件。

    以下是我的代码:

    def generate_config_file(self, list):
    
            config = ConfigParser()
            for index, item in enumerate(list):
                config.add_section(str(index))
                config.set(str(index), 'id', 'idtest')
                config.set(str(index), 'name', 'nametest')
    
            # Creating the folder
            myFolder = "/etc/elementary/"
            if not os.path.exists(myFolder):
                os.makedirs(myFolder)
    
                # Creating the file
                filePath = "/etc/elementary/settings.cfg"
                with open(filePath, 'wb') as configfile:
                    config.write(configfile)
    
        return
    

    我可以做些什么来解决我的问题?

2 个答案:

答案 0 :(得分:1)

您只是检查文件夹是否存在。您还需要检查文件本身是否存在,并且只有在文件不存在时才创建它。

filePath = "/etc/elementary/settings.cfg"
if not os.path.exists(filePath):
    with open(filePath, 'wb') as configfile:
        config.write(configfile)

或者,在您首先调用函数之前,使用os.path.exists检查文件是否存在。

答案 1 :(得分:1)

您只需在调用函数之前检查文件是否存在:

if not os.path.exists("/etc/elementary/settings.cfg"):
     obj.generate_config_file(...)

或将其添加到您的函数顶部:

def generate_config_file(self, list): 
    if os.path.exists("/etc/elementary/settings.cfg"):
        return
    ...