如何使用Python在Linux中搜索可执行文件?这些可执行文件没有扩展名,并且与具有不同扩展名的文件放在同一个文件夹中。谢谢
编辑:我的意思是搜索所有可执行文件的文件名并将它们存储在列表或元组中。谢谢
在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))
S_IEXEC
是S_IXUSR
的同义词。由于OP使用了IXGRP
和IXOTH
,我建议为了一致性使用IXUSR
。其次,这是搜索所有人都可以执行的文件。这意味着它可能不能被你自己执行,所以不要相信它能让你执行它(就像我刚刚在同事的代码中看到的那样,代码把我带到了这里^^)。 - Vserimport shlex
executables = shlex.split(r'find /dir/mydir -executable -type f')
output_process = subprocess.Popen(executables,shell=True,stdout=subprocess.PIPE)
在一些情况下,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)
subprocess.popen()
函数进行编程。 - RanRag