Python 中的 Stat 命令问题,如何更正错误?
Stat command problem in Python, how can I correct the error?
早上好,我在大学工作,他们给了我这个命令来搜索一个地址的所有文件,并找到你有权为组“其他”执行的文件:
def permisosX():
mypath = "/home/milax"
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for f in onlyfiles:
aux = os.stat(f).st_mode
if ((aux & stat.S_IXOTH)):
print(f)
当我 运行 在与 .py 程序相同的地址时它工作正常,但是如果程序被保存并且 运行 在除“mypath”之外的另一个地址,则会出现错误。为什么会这样?无论保存在何处,如何修复它以便在任何地方工作?
谢谢
如果 mypath
不是当前目录,则需要将其包含在对 stat()
的调用中:
aux = os.stat(join(mypath, f)).st_mode
您可能还想将其包含在打印语句中。
@John Gordon 是对的。
您缺少的是 aux = os.stat(f).st_mode
行中的连接。
另一种修复它并显示绝对路径的方法是写
onlyfiles = [join(mypath, f) for f in listdir(mypath) if isfile(join(mypath, f))]
但是我建议使用 pathlib
以更现代的方式重写整个代码
import stat
import pathlib
def permisosX(mypath):
files = pathlib.Path(mypath).glob("*")
onlyfiles = [f for f in files if f.is_file()]
for f in onlyfiles:
aux = f.stat().st_mode
if ((aux & stat.S_IXOTH)):
print(str(f))
permisosX(".")
permisosX("/home/milax")
早上好,我在大学工作,他们给了我这个命令来搜索一个地址的所有文件,并找到你有权为组“其他”执行的文件:
def permisosX():
mypath = "/home/milax"
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for f in onlyfiles:
aux = os.stat(f).st_mode
if ((aux & stat.S_IXOTH)):
print(f)
当我 运行 在与 .py 程序相同的地址时它工作正常,但是如果程序被保存并且 运行 在除“mypath”之外的另一个地址,则会出现错误。为什么会这样?无论保存在何处,如何修复它以便在任何地方工作?
谢谢
如果 mypath
不是当前目录,则需要将其包含在对 stat()
的调用中:
aux = os.stat(join(mypath, f)).st_mode
您可能还想将其包含在打印语句中。
@John Gordon 是对的。
您缺少的是 aux = os.stat(f).st_mode
行中的连接。
另一种修复它并显示绝对路径的方法是写
onlyfiles = [join(mypath, f) for f in listdir(mypath) if isfile(join(mypath, f))]
但是我建议使用 pathlib
import stat
import pathlib
def permisosX(mypath):
files = pathlib.Path(mypath).glob("*")
onlyfiles = [f for f in files if f.is_file()]
for f in onlyfiles:
aux = f.stat().st_mode
if ((aux & stat.S_IXOTH)):
print(str(f))
permisosX(".")
permisosX("/home/milax")