gpt4 book ai didi

python - 为什么 .cfg 没有被重写,而是创建了新文件?

转载 作者:行者123 更新时间:2023-12-01 01:49:04 25 4
gpt4 key购买 nike

请给我任何解释

我有一部分使用ConfigParser的代码我正在目录 ~/ui/config.cfg 中读取的文件在我调用下面的函数后,我在模块所在的目录中得到一个新文件,即 (~/ui/helper/config.cfg)

class CredentialsCP:

def __init__(self, cloud_name=None):
self.config = ConfigParser.ConfigParser()
self.cloud_name = cloud_name

def rewrite_pass_in_config(self, cloud, new_pass):
if new_pass:
self.config.read('config.cfg')
self.config.set(cloud, 'password', new_pass)
with open('config.cfg', 'wb') as configfile:
self.config.write(configfile)
else:
return False

它在我运行代码的目录中创建一个新文件,但我需要重写相同的文件。我怎样才能做到这一点?为什么我总是遇到同样的行为?

最佳答案

由于您在读取和写入时使用相同的文件名 (config.cfg)(并且不更改工作目录),因此您正在操作同一个文件。由于您正在编写 ~/ui/helper/config.cfg 文件(它是在运行代码后创建的),因此您也正在从中读取文件。

所以,您没有打开(用于读取)您认为的文件。来自 [Python]: read(filenames, encoding=None)

If a file named in filenames cannot be opened, that file will be ignored.
...
If none of the named files exist, the ConfigParser instance will contain an empty dataset.

您正在读取一个不存在的文件,该文件会生成一个空配置,这就是您在(所需的)文件中写入的配置。为了解决您的问题,请通过其完整或相对名称指定所需的文件。你可以有这样的东西:

  • __init__中:

    self.file_name = os.path.expanduser("~/ui/config.cfg") # Or any path processing code
  • rewrite_pass_in_config中:

    • 阅读:

      self.config.read(self.file_name)
    • with open(self.file_name, "wb") as configfile:
      self.config.write(configfile)

关于python - 为什么 .cfg 没有被重写,而是创建了新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com