【问题标题】:How to use bash command results as python args?如何使用 bash 命令结果作为 python args?
【发布时间】:2020-02-02 09:04:52
【问题描述】:

我正在尝试查找目录中的所有 .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

【问题讨论】:

标签: python bash command-line-arguments


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您可以使用 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)
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-08
        • 1970-01-01
        • 2011-08-10
        • 1970-01-01
        • 2018-06-23
        • 1970-01-01
        • 2019-09-09
        • 1970-01-01
        • 2019-06-29
        相关资源
        最近更新 更多