2016-03-19 29 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