Python 2.6 文件存在错误号17。

3
如果文件已经存在,我该如何消除错误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 错误消息。我该怎么办?
3个回答

4
在第一次调用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 )  <----

0
你可以创建一个变量来查看是否成功创建了文件,例如:
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' 

在您的代码中,如果首先使用try catch捕获错误,第二个os.makedirs(path,0755)仍然会再次引发错误。

0

我认为它可以实现你想要的功能。当出现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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接