Python QSettings-当用户删除文件时如何遵守?

Python QSettings-当用户删除文件时如何遵守?,python,pyside2,Python,Pyside2,我正试图找出使用此代码段的最简单用法: from PySide2 import QtCore settings = QtCore.QSettings("TestCompany", "TestApp") settings.setValue('testValue', 100) 在OSX上,这最终会将plist写入: /Users/frank/Library/Preferences/com.testcompany.TestApp.plist 根据合同,出于效率原因,变更可能不会立即写入 但是,一旦

我正试图找出使用此代码段的最简单用法:

from PySide2 import QtCore
settings = QtCore.QSettings("TestCompany", "TestApp")
settings.setValue('testValue', 100)
在OSX上,这最终会将plist写入:

/Users/frank/Library/Preferences/com.testcompany.TestApp.plist
根据合同,出于效率原因,变更可能不会立即写入

但是,一旦我看到plist文件,我假设我可以删除它,这样下次启动应用程序时,尝试从新设置实例返回值时将不会返回任何值

然而,即使我删除plist文件并关闭python解释器,然后重新打开它并构造一个新实例,它仍然以某种方式设法检索以前为“testValue”设置的值

我如何管理这一点,以便当用户删除设置文件并重新启动QT应用程序时,他们会得到一个干净的记录,而不是旧的值


我是否必须手动检查plist文件是否存在,并使用它清除内存中的任何现有值,或者是否有更好的方法来保证在删除文件并重新启动应用程序时一尘不染?

我知道这篇文章有点旧,但我遇到了同样的问题,并发现是的OSX最终会写下您的日志设置为:

/Users/frank/Library/Preferences/com.testcompany.TestApp.plist
但在保存设置时,这似乎不会立即发生

它会缓存您的设置-为了重置,您必须在MAC OSX终端中发出以下命令:

$ defaults delete com.testcompany.TestApp

希望这有助于今后在此结束的任何人。

否。您提到的场景有问题。由于默认情况下QSettings在macOs上使用CFPreferences API,可能系统正在其他地方为您缓存值。qt文档没有明确说明这一点,但是您可以尝试使用INI格式而不是本机格式来存储设置,以查看这是否会更改默认行为。反正我也不确定。。。只是做一个有根据的猜测:)谢谢你们。我不得不恢复使用ini格式和显式路径,以获得我想要的行为。我希望仍然能够使用操作系统的默认位置。我认为你是对的Gabriella,发生的系统缓存比预期的要多,即使使用sync()文件也不一定是在磁盘上创建的。