gpt4 book ai didi

Python os.stat 不扩展文件名中的通配符

转载 作者:行者123 更新时间:2023-11-30 22:58:37 25 4
gpt4 key购买 nike

我可能正在做一些非常愚蠢的事情,但有人可以帮忙吗?我想做的就是统计一个文件。 Python 不会使这种情况发生,当我调试 python 变量时,我可以在 shell 中使用它的输出进行统计。请看下面:

[root@logmaster output]# cat /usr/local/nagios/libexec/check_logrip_log_not_stale.py

import os
import sys
import datetime
import time

# Nagios return values
nagiosRetValOk = 0
nagiosRetValWarn = 1
nagiosRetValCritical = 2

# Below is the filename I am after
#logrip-out-2016-03-19-1458386101

dateFormat = datetime.datetime.now().strftime("%Y-%m-%d")
logFormat = "/home/famnet/logs/output/logrip-out-%s-*" % dateFormat


print os.stat(logFormat)

这是我运行基本脚本时发生的情况:

    [root@logmaster output]# python /usr/local/nagios/libexec/check_logrip_log_not_stale.py
Traceback (most recent call last):
File "/usr/local/nagios/libexec/check_logrip_log_not_stale.py", line 36, in <module>
print os.stat(logFormat)
OSError: [Errno 2] No such file or directory: '/home/famnet/logs/output/logrip-out-2016-03-19-*'

如果这对某些专家来说很容易浪费时间,请原谅我。

谢谢,但是,当我获取打印调试的输出并在 shell 中运行时,它可以工作。

[root@logmaster output]# stat /home/famnet/logs/output/logrip-out-2016-03-19-*
File: `/home/famnet/logs/output/logrip-out-2016-03-19-1458386101'
Size: 42374797 Blocks: 82776 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 36590817 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 504/ famnet) Gid: ( 1100/ staff)
Access: 2016-03-19 07:15:01.725794193 -0400
Modify: 2016-03-19 07:44:09.847793116 -0400
Change: 2016-03-19 07:44:09.847793116 -0400

最佳答案

通配符扩展是许多常见 shell 的一项功能,例如本例中的 bash。它不是 os.stat 底层系统调用的功能。

如果您想针对多个文件调用 os.stat,则必须先列出它们(使用诸如 glob.glob 之类的东西),然后调用每个路径os.stat一次。像这样的事情:

for full_path in glob.glob(logFormat):
print os.stat(full_path)

还要注意,带有通配符的路径可能会扩展为多个具体路径,这可以与命令行 STAT(1) 一起使用,但肯定会破坏 os.stat 只接受一个路径参数。

关于Python os.stat 不扩展文件名中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com