1

我正在学习一些 Python,但我有一个无法解决的问题。但首先我会告诉我我想要什么:

  1. 程序启动时,如果配置文件不存在,则创建一个新的(“模板配置”)。否则什么都不做(软件稍后会加载配置文件)。
  2. 当用户更改某些内容时,需要修改配置文件。
  3. 用户退出软件时,配置文件必须保持原样。

好吧,我已经完成了第二步和第三步,因为它们几乎相同。我的问题是第一步。现在我的软件创建一个新的配置文件(如果不存在),但如果该文件已经存在(带有配置),我的应用程序会覆盖这个“旧”文件并生成我的“模板配置”。

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

以下是我的代码:

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

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

4

2 回答 2

1

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

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

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

于 2013-10-20T03:21:53.697 回答
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
    ...
于 2013-10-20T03:23:08.280 回答