如何在Linux中用Python搜索可执行文件?

7 投票
3 回答
7474 浏览
提问于 2025-04-17 10:48

我想知道怎么用Python在Linux系统中搜索可执行文件。可执行文件没有后缀名,和其他有不同后缀名的文件放在同一个文件夹里。谢谢

补充说明:我说的搜索是指获取所有可执行文件的文件名,并把它们存储在一个列表或元组里。谢谢

3 个回答

3

函数 os.access() 在某些情况下比 os.stat() 更好,因为它可以检查你是否有权限执行某个文件,这个判断是根据文件的拥有者、所属组和权限来决定的。

import os

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

如果你说的“搜索”是指列出一个文件夹里所有可以执行的文件,那你可以使用这个来自SuperUser的链接里的命令。你还可以用Subprocess模块在Python代码中执行这些命令。

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

在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))

撰写回答