请问:
Python中是否有方式可以像前端的TSLint一样进行代码的自动风格格式检查?
我知道一个库:autopep8
我只有看到单个文件的检验:
autopep8 --in-place test_search.py
但是如何做到类似Python项目的配置文件中配置,然后自动检查呢?
现在推荐用 ruff,更快更方便,全局安装一下它就行。
pip install ruff
vscode开发python三件套:
前两个做参数和变量的静态类型检查,ruff用于代码格式化等等各种规则配置。
然后比如我用 poetry
以及 pyproject.yaml
来作为我的python配置文件的话,内容如下:
[tool.poetry]
...
[tool.poetry.dependencies]
...
[tool.poetry.group.dev.dependencies]
pytest = "^8.2.2"
pytest-asyncio = "^0.23.8"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
######################### 以下配置参考 #########################
[tool.ruff]
line-length = 120
ignore = ["E501", "E722"]
# output to requirements.txt
# poetry export -f requirements.txt --without-hashes --without-urls -o requirements.dev.txt
[tool.mypy]
ignore_missing_imports = true
disable_error_code = ["import-untyped", "arg-type", "attr-defined", "type-arg", "valid-type", "union-attr", "call-arg", "annotation-unchecked"]
[[tool.mypy.overrides]]
module = "*"
disable_error_code = ["import-untyped", "arg-type", "attr-defined", "type-arg", "valid-type", "union-attr", "call-arg", "annotation-unchecked"]
ignore_missing_imports = true
# https://github.com/microsoft/pyright/blob/main/docs/configuration.md
[tool.pyright]
include = ["src"]
exclude = ["**/__pycache__", ".venv"]
reportMissingImports = true
...
然后vscode的settings配置:
{
"[python]": {
"editor.formatOnType": true,
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit",
"source.fixAll.ruff": "explicit"
},
"editor.formatOnSave": true
},
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit",
"source.fixAll.ruff": "explicit"
},
}
之后,每一个python文件在你保存的时候 ruff
会自动格式化,mypy
类型检查,很方便。
是的,Python 中有多种方式可以进行代码的自动风格格式检查,类似于前端的 TSLint。
除了你已经知道的 autopep8
,另一个非常流行的工具是 flake8
,它结合了 pyflakes
、pycodestyle
(以前叫 pep8
)和 Ned Batchelder
的 mccabe
脚本,用于检查 Python 代码风格是否符合 PEP 8 标准,并且还能检测一些编程错误。
要在 Python 项目中配置自动代码风格检查,你可以使用以下步骤:
安装 flake8
:
pip install flake8
在项目根目录下创建配置文件:
你可以创建一个名为 .flake8
或 setup.cfg
的配置文件,并在其中定义你的检查规则。例如,一个简单的 .flake8
配置文件可能看起来像这样:
[flake8]
max-line-length = 120
ignore = E501,W503
这里,max-line-length
设置了代码行的最大长度,ignore
列出了你想忽略的错误代码。
在项目中运行 flake8
:
你可以通过命令行在项目根目录下运行 flake8
来检查整个项目的代码风格。例如:
flake8 .
这个命令会递归地检查当前目录及其子目录下的所有 Python 文件。
flake8
集成到你的持续集成/持续部署(CI/CD)管道中。这样,每次代码提交或合并时,都会自动运行 flake8
检查。flake8
的插件,可以在你编写代码时实时显示风格问题。通过以上步骤,你就可以在 Python 项目中配置和使用类似 TSLint 的代码风格检查工具了。
问题内容: 我有一些格式不一致的现有代码-有时两个空格用于缩进,有时四个空格,以此类推。代码本身是正确的,并且经过了严格的测试,但是格式却很糟糕。 在线上是否有一个地方,我可以简单地粘贴一段Python代码并自动为我缩进/设置格式?或者,是否可以执行类似的操作,并用格式化的版本覆盖每个文件? 问题答案: 编辑:如今,我建议使用autopep8,因为它不仅可以纠正缩进问题,而且(根据您的判断)可以使
问题内容: Python教程说:“在运算符周围和逗号后使用空格,但不要直接在括号结构内使用:a = f(1,2)+ g(3,4)”。“不直接在包围结构内”到底是什么意思? 问题答案: 这可能来自PEP 8-Python代码样式指南 。具体来说,请参见“表达式和语句中的空白”部分。 从该部分:
问题内容: 在python中,我想检查输入字符串是否为“ HH:MM”,例如01:16或23:16或24:00。结果为真或假。 如何通过使用正则表达式来实现? 问题答案: 您可以不使用正则表达式来实现:
问题内容: 现在我有: 除非我要转换没有微秒的字符串,否则此方法效果很好。如何指定微秒是可选的(如果它们不在字符串中,则应将其视为0)? 问题答案: 您可以使用一个块:
问题内容: 我想解析一个日期,它可以是几种我事先知道的格式。如果无法解析,则返回nil。在红宝石中,我确实这样: 这是简洁而有效的。如何在Python中做同样的事情? 问题答案: 您可以使用catch来尝试使用不匹配的格式时发生的情况。如@Bakuriu所述,您可以在找到匹配项时停止迭代以避免不必要的解析,然后在未定义因为未找到匹配格式而定义行为时: 您可以使用catch来尝试使用不匹配的格式时发
我想把时间放进牢房。我需要它是独立的,没有年,月,日数据日期时间的附件 当我尝试以h:mm AM/PM格式编写字符串15:55:00时,它会在excel工作表上显示为15:55:00,直到我选择单元格并按enter键,所以这似乎不是一种有效的方法。 传递日期时间是有效的,但我不想在我的手机里有日期信息,只想正确格式化时间。 我目前的代码如下:
有没有办法在Intellij中创建自定义的代码格式顺序?更具体地说,当一起按Option+Command+L时,我试图更改默认格式,并按类型格式化导入。
本文向大家介绍Python可视化mhd格式和raw格式的医学图像并保存的方法,包括了Python可视化mhd格式和raw格式的医学图像并保存的方法的使用技巧和注意事项,需要的朋友参考一下 mhd格式的文件里面包含的是raw图像的一些头信息,比如图片大小,拍摄日期等等,那么如何可视化图像呢? 这里path是mhd文件的路径,并且在该路径下需要有相应的raw文件 这里展示一下我的mdk文件和保存的pn