我已经在项目下安装了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
这很奇怪,因为我没有从标准输入中读取
第一个问题是,通配符扩展发生在壳,前命令行甚至执行。运行时:
somecommand *.py
该命令不知道您键入了*
。它所知道的就是您传入了文件列表。换句话说,yapf
由于无法看到模式,因此无法理解模式。
第二个问题是这**
不是有效的外壳文件遍历模式。从语义上讲,它等效于*
,因此运行yapf -ir files **.py
将只处理.py
当前目录和该files
目录中包含的所有文件。
如果要yapf
在所有Python文件上递归运行,请从当前目录开始,有一些解决方案。最简单的可能是:
yapf -ir .
这将处理.py
当前目录及其子目录中的所有文件。如果要进一步控制文件选择,请使用find
和xargs
:
find . -name '*.py' -print0 | xargs -0 yapf -i
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句