2012-01-21 36 views
6

Làm cách nào để tìm kiếm tệp thi hành bằng python trong linux? Các tệp thi hành không có phần mở rộng và nằm trong một thư mục cùng với các tệp có phần mở rộng khác nhau. Cảm ơnLàm cách nào để tìm kiếm tệp thực thi bằng python trong linux?

EDIT: Ý của tôi là tìm kiếm tên tệp của tất cả các tệp thi hành và lưu trữ chúng trong danh sách hoặc bộ dữ liệu. Cảm ơn

+1

Bản sao y của http://superuser.com/questions/38981/how-to-find-the-executable-files-under-a-certain-directory-in-linux –

+2

không chính xác lặp lại. Điều này là về python –

+0

sử dụng 'subprocess.popen()' với các lệnh được đề cập trong liên kết ở trên. – RanRag

Trả lời

6

Để làm điều đó bằng 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

Nếu tìm kiếm bạn muốn liệt kê tất cả các tệp thi hành trong một thư mục hơn là sử dụng lệnh từ SuperUser Link này. Bạn có thể sử dụng Subprocess module để thực thi lệnh từ mã python.

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

Chức năng os.access() là trong một số trường hợp tốt hơn so với os.stat(), bởi vì nó kiểm tra xem các tập tin có thể được thực hiện bởi bạn, theo chủ sở hữu tập tin, nhóm và quyền.

import os 

for filename in os.listdir('.'): 
    if os.path.isfile(filename) and os.access(filename, os.X_OK): 
     print(filename) 
Các vấn đề liên quan