Python操作系统统计未扩展文件名中的通配符

2024-10-01 00:20:31 发布

您现在位置:Python中文网/ 问答频道 /正文

也许我在做一些很蠢的事,但有人能帮忙吗。我要做的就是统计一个文件。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)

以下是运行基本脚本时发生的情况:

^{pr2}$

请原谅我,如果这是一个很容易浪费时间的专家。在

谢谢, 但是,当我获取打印调试的输出并在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

Tags: importhomeoutputdatetimeosrootshellout
2条回答

os.stat不会自动展开通配符。。。尝试使用glob

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

如果要对多个文件调用os.stat,则必须首先列出它们(使用类似glob.glob)的内容,然后按路径调用os.stat。像这样:

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

还要注意,带有通配符的路径可能会扩展到多个具体的路径,这可以使用命令行STAT(1),但肯定会中断{},后者只接受一个路径参数。在

相关问题 更多 >