0

当我尝试使用 open 函数时出现此错误。如果我理解正确,如果文件不存在(它不存在),它会自动创建。我尝试将“w”更改为“w+”,但我得到了同样的错误。

Traceback (most recent call last):
  File "altdl.py", line 24, in <module>
    sys.stdout = open(str(start_dir + "\\Logs\\" + "log_" + str(now.date()) + "_
" + str(now.time()) + ".log"), 'w')
IOError: [Errno 22] invalid mode ('w') or filename: 'C:\\Users\\Vaibhav\\Desktop
\\Test\\Logs\\log_2013-07-02_11:21:37.717000.log'

顺便说一句,start_dir设置为str(os.getcwd())

4

2 回答 2

0

不幸的是,Windows 讨厌路径名中的冒号。

尝试类似:

 with open("C:\\Users\\Vaibhav\\Desktop\\Test\\Logs\\log_2013-07-02_11.21.37.717000.log", "w") as f:
    pass
于 2013-07-02T18:42:00.617 回答
0

正如另一个答案中所说,Windows 并不喜欢冒号。因此,让我们尝试使用另一个字符来格式化您的时间/日期:

import datetime
filename = "log_{}.log".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
# filename should be something like : 'log_2013-07-02_20-47-06.log'
f = open(filename, 'w')

等等瞧!

另外,我建议使用os.joinpath而不是硬编码所有与操作系统相关的路径分隔 ( \\),以便您的程序可以在 Linux 和 Windows 上运行。

于 2013-07-02T18:50:39.273 回答