【发布时间】:2016-09-12 23:52:57
【问题描述】:
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)
我制作了这个简单的日志库,它在第一次导入时会在与正在运行的主脚本相同的位置的日志目录中创建一个具有当前时间和日期的新文件。但是,我收到以下错误:
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'
我做错了什么?
编辑:使用 script_dir 变量删除脚本名称,并修复了 if 语句的格式。我仍然收到错误
【问题讨论】:
-
您将
test.py视为一个目录,但它可能不是。 (它就在错误消息中。你怎么会错过它?) -
您的错误逻辑没有意义。 “如果级别是错误那么,如果级别不是错误?”
-
log子目录是否存在?如果没有,您将不得不创建它。open()不会自动创建缺少的子目录。 -
它存在,我手动进行了测试。我会添加一种方法来最终自动生成它
-
也许 Windows 反对文件名中存在冒号?