Estoy tratando de encontrar todos los archivos .js en directorios y los doy como argumentos para python. Podría recopilar todos los archivos con .js usando el comando bash find . -name "*.js"
, pero no sé cómo dar esta información a Python. No quiero enviar el nombre del archivo uno por uno. Quiero enviar como lista el código de Python que sigue el manejo de argumentos.
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
3 respuestas
Puede usar subprocess.run
desde un script de Python para hacer esto:
import subprocess
cmd = 'find . -name "*.js"'
p = subprocess.run(cmd, shell=True, capture_output=True)
files = p.stdout.decode().split()
print(files)
Si tiene GNU find, puede usar -exec +
para llamar a un comando con todos los nombres de archivo coincidentes de una vez.
find . -name '*.js' -exec script.py {} +
Si no, puede obtener el mismo comportamiento con find | xargs
.
find . -name '*.js' -print0 | xargs -0 script.py
Dado que foo.py es su script de Python, puede usar esto:
python foo.py `find . -name "*.js" | tr '\n' ' '`
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.