Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将bash命令结果用作python参数?_Python_Bash_Command Line Arguments - Fatal编程技术网

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

如何将bash命令结果用作python参数?,python,bash,command-line-arguments,Python,Bash,Command Line Arguments,我试图找到目录中的所有.js文件,并将其作为python的参数。使用bash命令find,我可以用.js收集所有文件-名称“*.js”,但我不知道如何将这些信息提供给python。我不想一个接一个地发送文件名。我想以列表的形式发送处理参数的python代码 import argparse argparser = argparse.ArgumentParser("sh test") argparser.add_argument("js_file", type=str, nargs ="+",

我试图找到目录中的所有.js文件,并将其作为python的参数。使用bash命令
find,我可以用.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脚本执行以下操作:

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' ' '`


您也可以在Python中找到与
*.js
匹配的所有文件:如果文件名中没有空格,这就是
Python my_script.py*.js