Python 2.6 文件存在 errno 17,

Python 2.6 File exists errno 17,

如果文件已经存在,我该如何消除错误 17 并发出警告消息?

import os, sys

# Path to be created
path = "/tmp/home/monthly/daily"

try:
   os.makedirs(path)
except OSError as e:
  if e.errno == 17:
     //do something

os.makedirs( path, 0755 );

print "Path is created"

但是它仍然显示 ERRNO 17 消息。我能做什么?

第一次调用 os.makedirs 后,将创建目录。 (如果目录已经存在,则不做任何更改)

第二次调用总是会引发异常。

删除对 makedirs:

的第二次调用
try:
    os.makedirs(path, 0755)
except OSError as e:
    if e.errno == 17:  # errno.EEXIST
        os.chmod(path, 0755)

# os.makedirs( path, 0755 )  <----

您可以创建一个变量来查看您是否创建了文件 像这样成功:

import os, sys

# Path to be created
path = "/tmp/home/monthly/daily"

created = False
is_error_17 = False

try:
   os.makedirs(path)
   created = True
except OSError as e:
  if e.errno == 17:
     print 'File has benn created before'
     is_error_17 = True
     pass

if created == True:
   print 'created file successfully'
else:
   print 'created file failed.'
   if is_error_17 == True:
      print 'you got error 17' 

在您的代码中,如果第一次尝试捕获错误,则第二次 os.makedirs( path, 0755 );仍然会再次引发错误。

我认为可以如您所愿。当发生 OSError 错误时,它会检查错误代码并打印一条警告消息,如果它是您有兴趣处理的错误,否则它只会传播异常。请注意,使用可选的 mode 参数 os.makedirs() 会覆盖 0777.

的默认值
import errno, os, sys

# Path to be created
path = "/tmp/home/monthly/daily"

try:
    os.makedirs(path, 0755)
except OSError as e:
    if e.error == errno.EEXIST:  # file exists error?
        print 'warning: {} exists'.format(path)
    else:
        raise  # re-raise the exception

# make sure its mode is right
os.chmod(path, 0755)

print "Path existed or was created"