2011-06-06 9 views
12

Tengo un proyecto de Django y estoy trabajando en el desarrollo de Pylint a través de él.Pylint de forma recursiva para un nombre de archivo dado

Tengo un par de situaciones en las que me gustaría poder buscar de forma recursiva todos los archivos con un nombre de pila y ponerlos en una lista diferente (usando diferentes opciones). Por ejemplo, me gustaría establecer diferentes opciones para pylinting urls.py y admin.py

Las siguientes obras de directorio 1 ..

pylint ./project_name/*/urls.py 

Pero me gustaría hacer que * recursiva. .. para que taladre en subdirectorios.

¿Alguna forma de lograr eso?


actualización También me gustaría que todos ellos funcionan como una sola salida pylint, no de manera secuencial

Respuesta

14

Dependiendo de su sistema operativo, puede utilizar:

find project_name -name urls.py | xargs pylint 
+4

Esto parece hacer exactamente lo que necesito ... parece que los está ejecutando todos como una ejecución de una sola píxel – Brant

+0

Como nota al margen, es importante no quitar ningún archivo '__init __. Py' de las rutas devueltas por find (para poder analizar el módulo en su lugar) con esta solución, o puede recibir advertencias de 'duplicate-code' si tiene otros archivos en sus módulos. –

3

Pruebe con find:

find ./project_name/ -name "urls.py" -exec pylint '{}' \; 

Si desea ejecutar varios archivos en una sola llamada al pylint:

find ./project_name/ -name "urls.py" -exec pylint '{}' + 
+1

Esto funcionó muy bien, pero les pasó una a la vez ... no es algo que mencioné en mi publicación, pero los necesito a todos para que funcionen como una sola planta. Actualizaré la pregunta. Todavía + 1-ing usted – Brant

+1

entonces, la solución Robin parece ser la buena;) –

+0

@Brant - Puede hacer esto con find. He editado la respuesta con un ejemplo. – tjameson

1
  • obtener todos los archivos de Python (recursivas)
  • pasarlos todos a la vez a pylint (de respuesta por Robin)
  • Mostrar producción en consola y ponerlo en un archivo

find . -name "*.py" -print0 | xargs -0 pylint 2>&1 | tee err_pylint.rst~

Cuestiones relacionadas