2016-03-19 99 views
1

可能是我正在做的很愚蠢的事情,但有人可以帮助。我所要做的就是统计一个文件。当我调试我的python变量时,Python不会在这种情况下发生这种情况,我可以使用它的输出在shell中进行统计。请看下面:Python os.stat不扩展文件名中的通配符

[[email protected] 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) 

这是当我运行的基本脚本会发生什么:

[[email protected] 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-*' 

请原谅我,如果这是时间,一些专家一个简单的浪费。

谢谢, 但是,当我把我的打印调试的输出,并在壳运行。

[[email protected] 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 

回答

3

扩展通配符的是许多普通炮弹如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这只需一个路径参数。

+0

非常好的建议,非常感谢。我已经接受了这个答案 – jaysunn

0

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