如何将 yapf 应用于目录下的每个 python 文件?
how to apply yapf to every python file under a directory?
我已经在项目下安装了 Google yapf(又一个 python 格式化程序)并尝试就地格式化我所有的 python 文件,但是我收到以下错误:
$ yapf -i -r files **.py
yapf: Input filenames did not match any python files
为什么yapf无法理解模式?我应该怎么做才能达到同样的目的?
编辑 我也按照建议尝试了 yapf -ir 但我得到了:
$ yapf -ir
usage: yapf [-h] [-v] [-d | -i] [-r | -l START-END] [-e PATTERN]
[--style STYLE] [--style-help] [--no-local-style] [-p] [-vv]
[files [files ...]]
yapf: error: cannot use --in-place or --diff flags when reading from stdin
这很奇怪,因为我没有从标准输入读取数据
第一个问题是通配符扩展发生在shell、甚至命令行执行之前。当你 运行:
somecommand *.py
该命令不知道您输入了 *
。它只知道你传入了一个文件列表。换句话说,yapf
无法理解该模式,因为它从未 看到 模式。
第二个问题是 **
不是有效的 shell 文件 globbing 模式。这在语义上等同于 *
,因此 运行ning yapf -ir files **.py
将只处理包含在当前目录和 files
目录中的任何 .py
文件。
如果您想 运行 yapf
递归地处理所有 Python 文件,从当前目录开始,有一些解决方案。最简单的大概是:
yapf -ir .
这将处理当前目录及其子目录中的所有 .py
文件。如果您想更好地控制文件的选择,请使用 find
和 xargs
:
find . -name '*.py' -print0 | xargs -0 yapf -i
我已经在项目下安装了 Google yapf(又一个 python 格式化程序)并尝试就地格式化我所有的 python 文件,但是我收到以下错误:
$ yapf -i -r files **.py
yapf: Input filenames did not match any python files
为什么yapf无法理解模式?我应该怎么做才能达到同样的目的?
编辑 我也按照建议尝试了 yapf -ir 但我得到了:
$ yapf -ir
usage: yapf [-h] [-v] [-d | -i] [-r | -l START-END] [-e PATTERN]
[--style STYLE] [--style-help] [--no-local-style] [-p] [-vv]
[files [files ...]]
yapf: error: cannot use --in-place or --diff flags when reading from stdin
这很奇怪,因为我没有从标准输入读取数据
第一个问题是通配符扩展发生在shell、甚至命令行执行之前。当你 运行:
somecommand *.py
该命令不知道您输入了 *
。它只知道你传入了一个文件列表。换句话说,yapf
无法理解该模式,因为它从未 看到 模式。
第二个问题是 **
不是有效的 shell 文件 globbing 模式。这在语义上等同于 *
,因此 运行ning yapf -ir files **.py
将只处理包含在当前目录和 files
目录中的任何 .py
文件。
如果您想 运行 yapf
递归地处理所有 Python 文件,从当前目录开始,有一些解决方案。最简单的大概是:
yapf -ir .
这将处理当前目录及其子目录中的所有 .py
文件。如果您想更好地控制文件的选择,请使用 find
和 xargs
:
find . -name '*.py' -print0 | xargs -0 yapf -i