ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VSCode的settings.json整理

2022-08-10 16:30:54  阅读:182  来源: 互联网

标签:old settings VSCode list json file new


强迫症看着settings.json里的内容表示很头疼,所以写了个简单的脚本升序排序
注:如果settings.json中没有注释内容,可以将代码中的json5都改成json
如果有注释内容,那排序后注释就没了[emoj]。需pip install json5

import json
import json5
import os

# ********** 需修改 dir_(默认路径好像是 C:\User\用户名\.vscode\userdata\User 下)
print('开始settings.json排序')
dir_ = r'D:\Develop\Microsoft Visual Studio Code\userdata\User'
src_name = "settings.json"  # 源文件名
new_name = "settings_.json"  # 新文件
old_name = "settings_old.json"  # 源文件重命名

src_file = os.path.join(dir_, src_name)
new_file = os.path.join(dir_, new_name)
old_file = os.path.join(dir_, old_name)

# 读取源文件内容
with open(src_file, 'r', encoding='utf-8') as f:
    text = json5.load(f)
    
# print(type(text))

def to_lower(req_list:list):
    # 统一大小写
    lower_upper = {}  # key: 处理后的字符串,value: 处理前的字符串
    res_list = []
    for t in req_list:
        new_t = t.lower()
        res_list.append(new_t)  # 全部转为小写字母
        lower_upper[new_t] = t
    return res_list, lower_upper 

def my_sorted(dic:dict):
    # 递归对每一层排序
    # 循环判断某个key对应的value是否为dict,是的话先进行里层排序
    for k, v in dic.items():
        if type(v) == dict:
            dic[k] = my_sorted(v)
    # 排序:
    # 1. 对key排序
    key_list, lower_upper = to_lower(list(dic.keys()))
    key_list.sort()
    # 2. 按key_list顺序重新构建dict
    new_dic = {lower_upper[k]: dic[lower_upper[k]] for k in key_list}

    return new_dic

# 排序
text = my_sorted(text)

# 将排序后的json内容写入新文件
json_text = json.dumps(text)
with open(new_file, 'w', encoding='utf-8') as f:
    f.write(json_text)

# 重命名源文件为 settings_old.json,新文件为 settings.json
# 如果已存在 settings_old.json,先删除
if os.path.exists(old_file):
    os.remove(old_file)
os.rename(src_file, old_file)
os.rename(new_file, src_file)
print('settings.json排序完毕')

效果:

标签:old,settings,VSCode,list,json,file,new
来源: https://www.cnblogs.com/Fission0102/p/16572852.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有