
做Python开发三年多,项目配置文件这个话题我踩过不少坑。yaml和json哪个更适合做配置,网上说法很多。今天我直白说说自己的使用体会。
先说json。刚入行时觉得json特别好用。语法简单,写起来快,Python内置的json模块直接读写。最吸引我的是,随便一个编辑器打开json文件,格式都很清楚。团队里如果有人不懂Python,也能看懂配置内容。json最大的好处是简单粗暴,不容易出错。我早期做的一个爬虫项目,就用json配置了十几个网站的抓取规则。每个规则包含url、请求头、解析规则,嵌套层次有四五层。用json写起来很干脆,一层层括号很清楚。
但用久了问题就出来了。比如配置里需要写注释,json规范不允许。有一次一个爬虫网站改了反爬机制,其他人不知道某个配置项的含义,改了一个值导致整个脚本跑崩。没有注释,只能翻代码看上下文。还有json的多行文本支持很差。配置sql语句的时候,要写成一大行字符串,可读性很差。有个项目配置了二十多条复杂sql,每条都挤在一行里,后来自己都不想看。
后来换了个项目,开始用yaml。第一次用感觉很舒服。yaml最打动我的地方是可读性。缩进结构天然适合层级数据,不用写那么多括号。多行文本直接竖着写,sql语句每一行都很清楚。注释随便写,不会影响解析。
不过yaml也不是完美无缺。它的缩进规则很严格,少一个空格都可能报错。有次团队新人提交代码,yaml文件里tab和空格混用了,排查了半小时才发现问题。yaml对数据类型的隐式转换也会坑人。比如配置里写了个'yes',yaml自动转成布尔值True,跟预期完全不一样。还有一点,yaml的复杂嵌套结构写起来容易晕。有次配置了一个三层循环的规则,缩进多到数不清。
三年下来,我总结了自己的选择标准。项目不大,配置项少于50个,团队成员都熟悉json,用json完全够。配置里需要写大量注释,或者配置项超过100个,我会推荐yaml。还有一种情况,配置里需要包含复杂的数据结构,比如深层嵌套的字典列表,个人感觉yaml更直观。json的方括号花括号多了真的眼花。
现在做的一个数据清洗项目,同时用了两种格式。简单的数据库连接信息、日志级别这种基础配置用json。复杂的数据清洗规则,包含正则表达式、多行sql、业务逻辑注解,用yaml。没有哪种格式是绝对正确的,适合当前场景的就是好的。
有个实际经验想分享。不管选哪种格式,配置文件的版本管理要做好。每次修改配置必须写变更记录,最好在文件头部加上修改日期和原因。我见过太多次配置改坏了找不到原因的惨案。还有解析配置的代码要加异常处理,无论json还是yaml,解析失败都能给出明确的错误位置。这个细节很多人不注意,出问题了才后悔。
如果你刚入门,我建议先试试json。上手快,坑少。等项目做大了,遇到json的局限时,再考虑yaml。两种格式并不冲突,混用也是常见做法。关键是团队要统一规范,别今天用这个明天换那个。配置文件的风格一致性比格式本身重要得多。
以上就是“Python 项目配置文件到底用 yaml 还是 json?”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14383/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料