You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Python修改JSON键值后Git误判文件为新文件如何解决?

解决Bitbucket PR中JSON文件被识别为新文件的问题

问题原因

你通过json.dump写入修改后的JSON时,生成的文件在缩进、换行符、编码这些细节上和原文件不一致,Git没法识别出只是局部修改,直接判定成了全新文件。

解决步骤

1. 对齐原文件的缩进规则

先查看原JSON文件用的是4个空格、2个空格还是制表符(Tab),然后在json.dump里指定对应参数:

  • 原文件用制表符的话:
    json.dump(data, jsonFile, indent='\t')
    
  • 原文件用2个空格的话:
    json.dump(data, jsonFile, indent=2)
    

2. 匹配原文件的换行符

Windows系统换行符是\r\n,Linux/macOS是\n,json.dump默认用当前系统的换行符,你可以通过newline参数强制和原文件一致:

with open(filename_write, 'w', newline='\n') as jsonFile:  # 原文件是Windows格式就改成'\r\n'
    json.dump(data, jsonFile, indent=4)

3. 统一文件编码

打开文件时明确指定原文件的编码(比如utf-8),避免编码差异导致文件内容整体变动:

with open(filename_write, 'r', encoding='utf-8') as jsonFile:
    data = json.load(jsonFile)

data['test']['ariel']['version'] = value

with open(filename_write, 'w', encoding='utf-8') as jsonFile:
    json.dump(data, jsonFile, indent=4)

4. 本地先验证差异

修改完后在本地执行git diff,如果输出里只有你改的那一行键值变化,说明格式匹配了;如果显示整个文件被替换,就回去调整缩进、换行符这些参数。

5. 用官方工具辅助对齐格式

可以用Python自带的json.tool把原文件格式化,对比你的输出文件:

python -m json.tool original.json > formatted.json

把你生成的文件和formatted.json对比,确保格式完全一致。

内容的提问来源于stack exchange,提问作者arielma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:30:06