我有一个 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
,我会遇到以下问题:一旦 writer 写入了 settings
文件,它将可能永远不会再写了,但在这种情况下,读者应该可以访问 settings
。换句话说,读者应该有能力从文件中读取,而不是在这种情况下等待作者。否则读者必须等待作者。
FiFo
的普通使用不允许读取器在写入器不写入(直到它已写入)的情况下从文件中读取。如何处理这个问题?
最佳答案
您可能对使用命名管道进行进程间通信感兴趣。在 Linux 中可用,它是为客户端 (writer.py)、服务器 (reader.py)、任务设计的一种特殊类型的文件。写入管道后,客户端将等待服务器接收到数据。这允许您在某种程度上同步这两个进程。
关于python - 如何在读取时不写入文件,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44305510/