2012-01-21 22 views
6

Jak wyszukać plik wykonywalny za pomocą Pythona w systemie Linux? Pliki wykonywalne nie mają rozszerzeń i znajdują się w folderze razem z plikami, które mają różne rozszerzenia. DziękiJak wyszukać plik wykonywalny za pomocą Pythona w systemie Linux?

EDYCJA: Co mam na myśli przez wyszukiwanie jest uzyskanie nazwy plików wszystkich plików wykonywalnych i przechowywać je na liście lub krotce. Dzięki

+1

dokładną kopią http://superuser.com/questions/38981/how-to-find-the-executable-files-under-a-certain-directory-in-linux –

+2

nie dokładną kopią. Ten dotyczy python –

+0

użyj 'subprocess.popen()' za pomocą poleceń wymienionych w powyższym linku. – RanRag

Odpowiedz

6

Aby zrobić to w Pythonie:

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

Jeśli przez wyszukiwanie rozumiesz listę wszystkich plików wykonywalnych w katalogu niż użyć polecenia z tego SuperUser Link. Możesz użyć Subprocess module, aby wykonać polecenia z kodu Pythona.

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

Funkcja os.access() jest w niektórych przypadkach lepsze niż os.stat(), ponieważ sprawdza, czy plik może być wykonywany przez ty, według właściciela pliku, grupy i uprawnienia.

import os 

for filename in os.listdir('.'): 
    if os.path.isfile(filename) and os.access(filename, os.X_OK): 
     print(filename) 
Powiązane problemy