我想创建一个日志文件,当前日期包含在文件名中,然后将数据发送到日志文件。
import time
current_date = str(time.strftime("%d/%m"))
data = 'test data'
log = open(current_date+"log.txt","a")
log.write("> "+data+"\n")
log.close()
运行时,会导致以下错误:
'FileNotFoundError: [Errno 2] No such file or directory: '09/04log.txt'
如何解决此问题?
答案 0 :(得分:0)
如果文件不存在,您需要创建该文件。此外,文件名不能包含正斜杠,因此您尝试从可能不存在的目录中打开。
更好地命名文件并使用a+
模式
答案 1 :(得分:0)
它失败是因为您尝试在不存在的目录中创建文件,并且这是禁止的。您应该首先创建文件夹:
try:
os.mkdir(os.path.dirname(current_date))
except OSError as e:
if e.errno == 17:
# directory already exists
pass
else:
raise
答案 2 :(得分:0)
这是因为current_date
中的反斜杠
结果将是a/b
,它告诉python a
是一个目录而b
是文件,因此最终结果将是01/01log.txt
,其中引用了01log.txt
文件01
目录。
答案 3 :(得分:0)
使用open()
时,该文件夹必须预先存在。
import time,os
def foo():
try:
current_date = str(time.strftime("%d/%m"))
data = 'test data'
log = open(current_date+"log.txt","w")
log.write("> "+data+"\n")
log.close()
except FileNotFoundError: # If there is no folder...
os.mkdir(os.path.dirname(current_date))
foo()
/
不允许这样做,你不能这样做。您不能使用的其他符号是:
\
|
*
?
"
<
>
即使您尝试使用其中一个字符手动命名文件,您也会注意到您无法:
在这种情况下,它是不允许的,因为它就像是说&#34;将它附加到此文件夹中的.txt文件&#34;。并且没有文件夹,你不能这样做。
旁注 :我将使用with
语句,并使用current_date = time.strftime("%d/%m")
,因为它总是一个字符串