Open and read latest json file one time only(只打开和读取最新的json文件一次)
本文介绍了只打开和读取最新的json文件一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以成员们……我如何才能一次只读取目录中的最新json文件(如果没有新文件打印某些内容)。到目前为止,我只能读取最新的文件...下面的示例脚本(每45分钟运行一次)打开并读取目录中的最新json文件。在本例中,最新的文件是file3.json(每30分钟创建一次json文件)。因此,如果由于某种原因没有创建文件4(例如,服务器无法创建新的json文件)。如果脚本再次运行..它仍将读取相同的最后一个文件3。目录中的文件
file1.json
file2.json
file3.json
下面的脚本能够打开和读取目录中创建的最新json文件。
import glob
import os
import os.path
import datetime, time
listFiles = glob.iglob('logFile/*.json')
latestFile = max(listFiles, key=os.path.getctime)
with open(latestFile, 'r') as f:
mydata = json.load(f)
print(mydata)
为确保脚本将仅读取最新文件并仅读取最新文件一次...在以下方面:-
listFiles = glob.iglob('logFile/*.json')
latestFile = max(listFiles, key=os.path.getctime)
if latestFile newer than previous open/read file: # Not sure to compare the latest file with the previous file.
with open(latestFile, 'r') as f:
mydata = json.load(f)
print(mydata)
else:
print("no new file created")
谢谢您的帮助。值得分享的解决方案示例。
我想不出解决办法……看似简单,但几天试一试就没什么运气了。
(1)Make sure read latest file in directory
(2)Make sure read file/s that may miss to read (due to script fail to run)
(3)Only read once all the files and if no new file give warning.
谢谢。
经过这样的讨论和建议,我得到的方法很少,或者至少可以满足一些要求。我只移动已处理的文件。如果没有创建文件,脚本将不运行,如果脚本失败,一旦标准化,它将运行并读取所有可用相关文件。我认为目前还不错。谢谢你们,伙计们...
推荐答案
以下是答案而不是一种方法,我想建议:
想法如下:
写入目录的每个日志文件都可以有一个名为"creation_time": timestamp
的key-val(存储在服务器中的文件X.json)。现在,您的脚本在45min
运行以获取转储到目录的文件。在正常情况下,您必须能够读取文件,最后,当您退出脚本时,您可以将上次读取的文件名和从fileX.json
获取的创建时间存储到logger.json
中。
以下是logger.json的示例:
{
"creation_time": "03520201330",
"file_name": "file3.json"
}
每当服务器出现故障或发生任何延迟时,都可能会在目录中创建fileX.json
或new fileX's.json
的重写。在这些情况下,您需要首先打开logger.json并获取时间戳和最后一个文件名,如上面的示例所示。通过使用最后的文件名,您可以将Logger中存在的旧时间戳与fileX.json
中的新时间戳进行比较。如果它们基本匹配,则只需预读文件并重写记录器即可。如果不是这样,您应该再次阅读最后
fileX.json
,然后继续阅读其他前面的文件。
这篇关于只打开和读取最新的json文件一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:只打开和读取最新的json文件一次
猜你喜欢
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01