免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11492 | 回复: 0
打印 上一主题 下一主题

mkdir和makedirs的使用总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-16 11:39 |只看该作者 |倒序浏览

                                                                      昨晚写的水源3P图片自动下载的脚本遇到一个小的问题,就是当我用makedirs创建递归子目录的时候,总是检测到一个OSError,但是又不影响结果,百思不得其解。
      今天早上起来有研究了Python的lib文档,发现只有在子目录创建失败或者已经存在的时候makedirs才会抛出一个OSError异常,所以问题肯定出在创建已经存在的目录上。看了一下程序结构,果不其然,我为每一个主题帖子创建一个存档的目录是在下载每一张图片时执行的,这样导致每个主题帖的第1张以后的图片下载时都会去创建同一个子目录,所以这样就抛出了一个OSError异常。把这段程序移到每个主题帖的循环中。问题得以解决,并且这样还提高了效率。
      另外,在执行URL访问时我先建立了"download"目录,这样,不必每次循环都去判断"download"目录是否存在,而且可以直接用mkdir来创建子目录(因为上级目录已经存在),这样也可以改善效率。
   
      总结一下mkdir和makedirs的用法:
      1.mkdir( path [,mode] )
      作用:创建一个目录,可以是相对或者绝对路径,mode的默认模式是0777。
      如果目录有多级,则创建最后一级。如果最后一级目录的上级目录有不存在的,则会抛出一个OSError,例如: import os
os.mkdir( './image' ) # successful
# if ./download exits, successful
# else
failed, get a
oserror
try :
    os.mkdir( 'download/image' )
except OSError, why :
    print "Faild: %s " % str(why)
   
      2.makedirs( path [,mode] )
      作用: 创建递归的目录树,可以是相对或者绝对路径,mode的默认模式也是0777。
      如果子目录创建失败或者已经存在,会抛出一个OSError的异常,Windows上Error 183即为目录已经存在的异常错误。如果path只有一级,与mkdir一样。例如:
import os
try :
    os.mkdir( 'download/image/png' )
except OSError, why :
    print "Faild: %s " % str(why)
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85537/showart_1417818.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP