gpt4 book ai didi

python - python中一致的读写文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:26 25 4
gpt4 key购买 nike

我是一名 Python 初学者,面临以下问题:我有一个脚本定期读取设置文件并根据这些设置执行某些操作。我有另一个由某些 UI 触发的脚本,该脚本使用用户输入值写入设置文件。我使用 ConfigParser 模块来读取和写入文件。

我想知道这种情况是否能够导致不一致的状态(比如在读取设置文件的过程中,另一个脚本开始写入)。我不知道幕后是否有任何机制可以自动防止这种情况。

如果可能出现这种不一致,我可以使用什么来同步两个脚本并保持操作的完整性?

最佳答案

I'm a Python beginner and facing the following : I have a script periodically reading a settings file and doing something according to those settings . I have another script triggered by some UI that writes the settings file with user input values.

当读取器读取而写入器写入文件时,可能会出现竞争条件,因此读取器可能会在文件不完整时读取文件。

您可以通过在读写时锁定文件来防止这种竞争(请参阅 Linux flock()Python lockfile module ),以便读者永远不会观察到文件不完整。

或者,更好的是,您可以先写入临时文件,完成后 rename它以原子方式更改为最终名称。这样读者和作者就不会阻塞:

def write_config(config, filename):
tmp_filename = filename + "~"
with open(tmp_filename, 'wb') as file:
config.write(file)
os.rename(tmp_filename, filename)

当作者使用上述方法时,读者无需进行任何更改。

关于python - python中一致的读写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410823/

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