我有一个python
程序(比如reader.py
),使用文件setting.py
从阅读:如何不能写入文件,而阅读,反之亦然
while(True):
...
execfile(settings.py)
...
但有其他python
程序(比如writer.py
),其使用此文件写入到:
...
try:
settings = open('settings.py', 'w')
settings.truncate()
settings.write('some text')
except IOError:
print('Cannot write to file')
finally:
settings.close()
...
注1:reader.py
和writer.py
不'知道'对每个行吟诗人河
注2:reader.py
读取settings.py
循环,虽然writer.py
写道,当用户想要的文件到(在他/她点击了“”写'不一定正确的,它只是意味着没有任何规则时向右) 。
问题:什么是,以避免任何矛盾,以合作两种方案的最佳方式?我知道这可能取决于平台。我正在使用Linux。发行版本是:Ubuntu,Scientific Linux。
EDIT1:如果我选择使用FiFo
我会遇到以下问题:一旦作家写settings
文件时,它可能永远不会再写信,但读者应该在这种情况下,必须settings
访问反正。换句话说,读者应该有能力从文件中读取,而不是在这种情况下等待作者。否则读者必须等待作家。 如果写入者没有写入(直到写入),则普通使用FiFo
不允许读者从文件读取。如何处理这个问题?
如果您需要并行运行这两个脚本,同时确保读/写不同时发生,您可以尝试使用[multiprocessing](https://docs.python.org/3/library/multiprocessing)。 html),创建分离的线程并加入它们。 –
您可能想要写入'settings_new.py',然后一旦写入完成,将'settings_new.py'移至'settings.py'(覆盖它)。我认为这应该创建一个原子“更新”文件 - 许多应用程序,如文本编辑采取这种方法。 – Attie