2012-01-21 16 views
6

Come si cerca un file eseguibile utilizzando python in linux? I file eseguibili non hanno estensioni e si trovano in una cartella insieme a file con estensioni differenti. GrazieCome posso cercare un file eseguibile usando python in linux?

MODIFICA: Ciò che intendo per ricerca è ottenere i nomi file di tutti i file eseguibili e memorizzarli in un elenco o tupla. Grazie

+1

duplicato esatto del http://superuser.com/questions/38981/how-to-find-the-executable-files-under-a-certain-directory-in-linux –

+2

non è esatto duplicato. Questo riguarda python –

+0

usa 'subprocess.popen()' con i comandi menzionati nel link sopra. – RanRag

risposta

6

di farlo in 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

Se per ricerca si intende elencare tutti i file eseguibili in una directory piuttosto che utilizzare il comando da questo SuperUser Link. È possibile utilizzare Subprocess module per eseguire i comandi dal codice Python.

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

Funzione os.access() in alcuni casi è meglio di os.stat(), perché verificare se il file può essere eseguito da si, secondo il proprietario del file, gruppo e permessi.

import os 

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