如何使用 bash 命令结果作为 python 参数?

How to use bash command results as python args?

我正在尝试查找目录中的所有 .js 文件并将其作为参数提供给 python。我可以使用 bash 命令 find . -name "*.js" 用 .js 收集所有文件,但我不知道如何将这些信息提供给 python。我不想一个一个地发送文件名。我想将处理参数的 python 代码作为列表发送。

import argparse

argparser = argparse.ArgumentParser("sh test")

argparser.add_argument("js_file", type=str, nargs ="+", help="js file names")

args = argparser.parse_args()
for file in args.js_file:
    # do something

如果您有 GNU find,您可以使用 -exec + 一次性调用包含所有匹配文件名的命令。

find . -name '*.js' -exec script.py {} +

如果不是,您可以使用 find | xargs 获得相同的行为。

find . -name '*.js' -print0 | xargs -0 script.py

您可以使用 python 脚本中的 subprocess.run 来执行此操作:

import subprocess
cmd  = 'find . -name "*.js"'

p = subprocess.run(cmd, shell=True, capture_output=True)
files = p.stdout.decode().split()
print(files)

鉴于 foo.py 是您的 python 脚本,您可以使用:


python  foo.py `find . -name "*.js" | tr '\n' ' '`