2012-01-21 18 views
6

¿Cómo busco un archivo ejecutable usando python en Linux? Los archivos ejecutables no tienen extensiones y están en una carpeta junto con archivos que tienen diferentes extensiones. Gracias¿Cómo busco un archivo ejecutable usando python en Linux?

EDITAR: Lo que quiero decir con la búsqueda es obtener los nombres de archivo de todos los archivos ejecutables y almacenarlos en una lista o tupla. Gracias

+1

duplicado exacto de http://superuser.com/questions/38981/how-to-find-the-executable-files-under-a-certain-directory-in-linux –

+2

no exacta duplicado. Este es sobre python –

+0

use 'subprocess.popen()' con los comandos mencionados en el enlace de arriba. – RanRag

Respuesta

6

hacerlo en Python:

import os 
import stat 

executable = stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH 
for filename in os.listdir('.'): 
    if os.path.isfile(filename): 
     st = os.stat(filename) 
     mode = st.st_mode 
     if mode & executable: 
      print(filename,oct(mode)) 
1

Si busca buscar todos los archivos ejecutables en un directorio, use el comando de este SuperUser Link. Puede usar Subprocess module para ejecutar los comandos desde el código python.

import shlex 
executables = shlex.split(r'find /dir/mydir -executable -type f') 
output_process = subprocess.Popen(executables,shell=True,stdout=subprocess.PIPE) 
1

Función os.access() es en algunos casos mejor que os.stat(), ya que comprueba si el archivo puede ser ejecutado por que, de acuerdo con el propietario del archivo, grupo y permisos

import os 

for filename in os.listdir('.'): 
    if os.path.isfile(filename) and os.access(filename, os.X_OK): 
     print(filename) 
Cuestiones relacionadas