python - 在 Python 中将列表扩展为 json 文件
问题描述
我有一个保存在 json 文件中的数组,看起来像这样[4.810,-75.700,0.020,11,5.070,-75.520,0.010,11]
。我正在使用 Python 将新的 4 元组附加到这个数组。
globe_list = [18.110,-66.170,0.000,11]
json_array = json.dumps(globe_list)
with open(webgl_file_path + 'tweet_locations.json', 'a') as tf:
tf.write(json_array)
问题是,当文件已经存在时,附加后得到的是两个数组:
[4.810,-75.700,0.020,11,5.070,-75.520,0.010,11][18.110,-66.170,0.000,11]
而我想要的是一个数组:
[4.810,-75.700,0.020,11,5.070,-75.520,0.010,11, 18.110,-66.170,0.000,11]
如果我首先将 json 数组加载到列表中,则可以扩展它,但文件很大,我担心性能问题。有没有一种简单的方法可以做到这一点?
提前致谢。
解决方案
您可以尝试将文件指针移动到最终“]”的位置,然后编写附加的 json,不带初始“[”,如下所示:
>>> import io
>>> with open('example.json', 'rb+') as f:
... f.seek(-1, io.SEEK_END)
... f.write(b', ' + new_json[1:].encode())
请注意,这必须使用二进制模式的文件来完成。上面的代码假定文件系统编码将“]”编码为单个字节,并且没有换行符和文件结尾。如果其中任何一个条件成立,您将需要调整传递给seek
.
推荐阅读
- mysql - 我的 mysql 的“my.conf”应该是什么样的?
- c# - 如何在NHibernate中查询每个组中的第一个条目
- mysql - 使用 asp.net core 查询 Mysql 数据库
- scikit-learn - 为什么计算宏观平均值的不同方法会得到不同的精度、召回率和 f1 分数
- python - 如何网格绘制 2D 分类数据
- xamarin - 如何在 Xamarin 应用程序中实现 Outlook 样式的调度程序?
- php - 使用 PHP 从 MySQL 查询中没有返回行,而手动运行查询返回行
- jpa - @Inject @Stateless-bean 到 @Singleton/@ApplicationScoped-bean
- c# - 使用 XAML 的动态网格行数和列数
- unity3d - 如何让玩家在忽略旋转和重力的情况下移动?