import datetime
import os
import sys
import time
if "ZLOG_FILE" not in globals():
global ZLOG_FILE
script_dir = os.path.realpath(sys.argv[0]).replace(sys.argv[0], "")
ZLOG_FILE = os.path.join(script_dir, "log", datetime.datetime.fromtimestamp(time.time()).strftime("%m-%d-%Y %H:%M:%S"))
with open(ZLOG_FILE, "w"):
pass
def log(level, msg):
with open(ZLOG_FILE, "a") as f:
# Fix colors
if level == "INFO":
msg = "ESC[37m[INFO] " + msg
elif level == "WARN":
msg = "ESC[33m[WARN] " + msg
elif level == "ERROR":
msg = "ESC[31m[ERROR] " + msg
if level != "ERROR":
print(msg)
else:
sys.stderr.write(msg)
f.write(msg)
最初のインポート時に、実行中のメインスクリプトと同じ場所にあるログディレクトリに現在の時刻と日付を持つ新しいファイルを作成する、このシンプルなロギングライブラリを作成しました。しかし、次のエラーが表示されます。無効な引数ウィンドウを開いたままのPython
Traceback (most recent call last):
File "test.py", line 1, in <module>
import zlog
File "C:\Users\zane\Desktop\zlog.py", line 10, in <module>
with open(ZLOG_FILE, "w"):
OSError: [Errno 22] Invalid argument: 'C:\\Users\\zane\\Desktop\\log\\09-12-2016
20:02:26'
私は間違っていますか?
EDIT:script_dir変数を使用してスクリプト名を削除し、if文で書式を修正しました。
にあったディレクトリを得た後、私はパスからメインスクリプトを削除するのを忘れてもイムはまだエラーを取得しますディレクトリではないでしょう。 (それはエラーメッセージのすぐそこにありますが、どのようにそれを見逃すことができますか?) –
あなたのERRORロジックは意味をなさない。 "レベルがエラーならば、もしレベルがエラーでないならば?" – Soviut
'log'サブディレクトリは存在しますか?そうでない場合は、作成する必要があります。 'open()'は欠けているサブディレクトリを自動的に作成しません。 –