Python: Erstellen Sie eine leere Datei Objekt

Ich bin versucht zu machen, ein logging-Modul für Python, das funktioniert nicht, denn es scheitert an der Erstellung des file-Objekts.

debug.py:

import os
import datetime
import globals

global fil
fil = None

def init(fname):
     fil = open(fname, 'w+')
     fil.write("# PyIDE Log for" + str(datetime.datetime.now()))

def log(strn):
    currentTime = datetime.datetime.now()

    fil.write(str(currentTime) + ' ' + str(os.getpid()) + ' ' + strn)
    print str(currentTime) + ' ' + str(os.getpid()) + ' ' + strn

def halt():
    fil.close()

fil wird nicht funktionieren, wie None wie bekomme ich eine AttributeError. Ich habe auch versucht, erstellen Sie ein dummy-Objekt:

fil = open("dummy.tmp","w+")

aber die dummy.tmp - Datei geschrieben, stattdessen, obwohl init() aufgerufen wird, bevor log() ist. Natürlich kann nicht öffnen Sie eine neue Datei über eine bereits geöffnete Datei. Ich habe versucht, in der Nähe fil vor init(), aber Python sagte, es könnte nicht führen write() auf eine geschlossene Datei.

Dies ist der code, der Zugriff auf debug.py

if os.path.exists(temp):
         os.rename(temp, os.path.join("logs","archived","log-" + str(os.path.getctime(temp)) + ".txt"))
         debug.init(globals.logPath)
         debug.log("Logger initialized!")

Ich würde gerne die Protokollierung in meinem Programm und ich kann nicht finden, eine Abhilfe für dieses.

import logging?
aus Neugier, warum arent Sie encompassign dies in einer Klasse? Im ziemlich sicher, Sie würden dieses Problem vermeiden, wenn Sie Tat dies in einer Klasse
das wird nicht funktionieren, weil ich eine log-Archivierungs-system einrichten. Sehen Sie die letzten code-snippet. Die Datei zugreift Konflikt. Wenn ich öffnen Sie die Datei mit debug.py vor init() dann werde ich nicht in der Lage, wite, da es bereits durch einen Prozess verwendet.
es ist auch möglich, hes nur versuchen zu lernen, wie etwas zu tun auf seinem eigenen? es ist immer gut, die Praxis zu implementieren, etwas, das bereits vorhanden ist auf Ihrem eigenen.
Es ist immer eine gute Praxis zu lernen, einige grundlegende Module, die in fast jedem einzelnen Projekt.

InformationsquelleAutor Galen Nare | 2015-05-19

Schreibe einen Kommentar