我有一个名为myBlock.json文件地址:
{
"server": "https://abc.us",
"name":"XYZ",
"myData":"2019-04-08T15:43:05.810483Z",
"someFlg":"T",
"moreData":"k"
}
我正在尝试用新的日期和时间信息来改变这一点
with open("myBlock.json") as json_data:
self.myBlockInfo = json.load(json_data)
origData = self.myBlockInfo["myData"]
origLine = '\"myData\":\"'+origData +'\",'
nowData = self.timeISO8601ZuluUTC()
newLine = '\"myData\":\"'+nowData+'\",'
with open("myBlock.json", "r+") as fh:
for line in fh.readlines():
if origLine in line:
print ("1-->", line)
str.replace(line, origLine, newLine)
print("2-->", line)
但不仅行是一样的,而且文件也是一样的myBlock.Json文件保持不变而不变?你知道吗
您可以通过以下方式编辑文件:
直接编辑
myBlockInfo["myData"]
块并用json.dump文件. 另外,您可以使用encoding选项来确保读取和写入时的两种编码相同你要找的是[Python 3]: json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)的缩进:
代码.py:
输出:
如您所见,该文件已被很好地重写,而无需修改其原始(文本)内容。你知道吗
首先,不需要在单引号内转义双引号。我是说,用这个来代替:
然后,更简单的替换方法是替换整个文件内容,而不是逐行读取:
但是,这并不能保证有效!我在第一个
if
块中放置了一个with
,以帮助您检查所期望的内容是否真的存在。输入JSON可能在冒号周围有空格,比如"myData": "foobar"
,甚至在冒号周围有新行。这些都是合法的JSON。这就是为什么评论中有人建议您阅读JSON,修改它,然后写回JSON。你知道吗如果你认为回写JSON会弄乱格式,试试看
indent=4
将通过插入适当的缩进来“漂亮地打印”您的JSON,可能会保留一些您期望的格式。你知道吗相关问题 更多 >
编程相关推荐