python - 获取另一个程序编辑文本文件的时间

标签 python python-2.7 text-files

所以我有一个 python 脚本(我们称之为 file_1.py),它用新内容覆盖文本文件的内容,并且它工作得很好。我有另一个 python 脚本 (file_2.py),它读取文件并对文件中的数据执行操作。使用 file_2.py 我一直试图获取 file_1.py 编辑文本文件的时间,然后在添加新数据后立即对其进行一些处理。我查看了subprocess module但我真的不知道如何在不同的文件中使用它。这是我到目前为止所拥有的:

file_1.py:

with open('text_file.txt','w') as f:
    f.write(assemble(''.join(data))) # you can ignore what assemble does, this part already works.

file_2.py:

while True:
    f = open('text_file.txt','r')
    data = f.read()
    function(data)
    f.close()

我认为,由于我每次循环都关闭并重新打开文件,因此文件中的数据将会更新。但是,看来我错了,因为即使文件已更新,数据仍然保持不变。

那么我该如何去做呢?

最佳答案

您是否总是用相同的数据覆盖第一个文件中的数据? 我的意思是,而不是随着时间的推移附加或实际更改数据?

当我改变时,我看到它在这里工作

with open('text_file.txt','wt') as f:

with open('text_file.txt','at') as f:

我附加了一些数据。 'w' 将覆盖,如果数据没有更改,您将一遍又一遍地看到相同的数据。

编辑:

另一种可能性(如OP self 回答的评论中所讨论的)是在写入文件后需要使用f.flush()。尽管在关闭文件(或留下 with block )时缓冲区会自动写入磁盘,但该写入可能需要一些时间,如果在此之前再次读取该文件,则不会更新在那里(还)。要消除这种不确定性,请在更新后调用刷新,这会强制磁盘写入。

如果您在两次读取之间休眠读取代码足够长的时间(即读取速度足够慢),则可能不需要手动刷新。但如果有疑问,或者要以简单的方式进行确定,只需使用 flush()

关于python - 获取另一个程序编辑文本文件的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488016/

相关文章:

powershell - 使用PowerShell v2从大文本文件中获取行的子集

c# - 将列表框的项目保存到文本文件

python - 设置 Pyramid Web 框架 | FCGI 共享主机

python - 如何将这些数据加载到 LSTM 中?

Python:字典:根据提供的键返回一个初始化的类对象变量

python - 将文件数据流式传输到 mongodb gridfs

python - 在 psycopg2 中打开 postgres 连接导致 python 崩溃

python - 查找数据框中每一行的前 N ​​列

Python 列表理解,具有独特的项目

C# 不检测用 PHP 编辑的文本文件