如何使用 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' ' '`
我正在尝试查找目录中的所有 .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' ' '`