Python文件无法打开[FileNotFoundError:]

时间:2017-04-09 14:48:11

标签: python file

我想创建一个日志文件,当前日期包含在文件名中,然后将数据发送到日志文件。

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'

如何解决此问题?

4 个答案:

答案 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()

如果您只想在文件名中使用/

不允许这样做,你不能这样做。您不能使用的其他符号是:

  • \
  • |
  • *
  • ?
  • "
  • <
  • >

即使您尝试使用其中一个字符手动命名文件,您也会注意到您无法:

Image

在这种情况下,它是不允许的,因为它就像是说&#34;将它附加到此文件夹中的.txt文件&#34;。并且没有文件夹,你不能这样做。

旁注 :我将使用with语句,并使用current_date = time.strftime("%d/%m"),因为它总是一个字符串