2016-03-19 11 views
1

Wahrscheinlich etwas wirklich dumm ich mache, aber kann jemand bitte helfen. Ich versuche nur, eine Datei zu erstellen. Python wird dies nicht machen, wenn ich meine Python-Variablen debugge, kann ich sie in der Shell mit ihrer Ausgabe angeben. Bitte siehe unten:Python os.stat nicht Wildcard in Dateiname erweitern

[[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) 

Hier ist, was passiert, wenn ich die grundlegende Skript ausführen:

[[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-*' 

Bitte verzeihen Sie mir, wenn dies eine einfache Zeitverschwendung für einige Experten ist.

Danke, Allerdings, wenn ich die Ausgabe von meinem Drucken Debug nehmen und in der Shell laufen, funktioniert es.

[[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 

Antwort

3

Expansion von Wildcards ist ein Merkmal vieler gemeinsamen Muscheln, wie bash in diesem Fall. Es ist kein Merkmal des zugrunde liegenden Systemaufrufs os.stat.

Wenn Sie os.stat gegen mehr als eine Datei aufrufen möchten, müssen Sie sie auflisten müssen (so etwas wie glob.glob verwenden) zuerst, dann rufen Sie os.stat einmal pro Weg. Etwas wie folgt aus:

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

auch beachten, dass ein Pfad mit einem Platzhalter, um mehrere konkrete Wege erweitern können, die STAT(1) mit der Kommandozeile arbeiten kann, wird aber sicherlich os.stat brechen, die nur einen einzigen Weg Argument.

+0

Ausgezeichneter Rat, vielen Dank. Ich habe diese Antwort akzeptiert – jaysunn

0

os.stat wird die Wildcard nicht automatisch erweitern ... versuchen glob