如何在Nox中运行带管道的命令?
在Nox中运行带管道的Shell命令
Nox的session.run官方就支持通过shell执行命令,不需要找未文档化的功能。默认情况下session.run会直接调用程序、跳过shell解析,所以管道这类依赖shell的语法会失效,只需要给session.run加上shell=True参数即可。
比如针对clang-format的场景,可以这样写:
import nox @nox.session(venv_backend="none") def clang_format(session: nox.Session): session.run( "find . -name '*.c' -print0 | xargs -0 clang-format --style=file --dry-run", shell=True )
注意事项
- 使用
shell=True时,要把整个带管道的命令作为单个字符串传入,而非拆分参数列表。 - 不同操作系统的shell语法存在差异,若需跨平台兼容,可能要针对Windows和类Unix系统分别处理命令,或是用跨平台工具替代shell管道逻辑。
内容的提问来源于stack exchange,提问作者drhagen
相关产品推荐
相关产品推荐

