2013-05-30 80 views
0

我正在尝试编写一段代码,用于检查目录是否存在,是否会打印它,如果它确实请求覆盖权限以及是否提示创建目录。Python:如果声明异常使用os.path.isdir?

这是我到目前为止有:

def mk_prjDir(): 
    print "Checking to see if", prjDir, "exists.." 
    dirList = os.listdir(prjDir) 
    for d in dirList: 
     if os.path.isdir(d): 
      print (prjDir, "exists!") 
     else: 
      print (prjDir, "does not exist!") 

但每次我运行它,如果该目录不存在时,它只是一个错误转储。我究竟做错了什么?

更新与追踪:

Checking to see if /directory exists.. 
Traceback (most recent call last): 
    File "alpha.py", line 73, in <module> 
    mk_prjDir() 
    File "alpha.py", line 50, in mk_prjDir 
    dirList = os.listdir(prjDir) 
OSError: [Errno 2] No such file or directory: '/directory' 

更新#2:ospath是一个错字,但仍然是错误。

我想尝试并捕获该异常。我应该使用一段时间== True:和一个尝试/除外?如果是这样,那是什么样子?

+0

什么是完整的追踪? 'ospath.isdir'是否是你的代码中的错字? – Blender

+1

你有'import os.path as ospath'语句,还是有一个用'ospath.isdir()'输入的错字? –

+0

@JacobColeman不知道为什么有人低估了,但总是正确缩进代码并包含相关的回溯。 –

回答

1

首先prjDir必须是一个完整路径prjDir,即 “\家\ my_direc \”,othwerise os.listdir将试图找到prjDir脚本的当前工作目录。

其次,因为os.listdir只返回文件/目录名称而不是完整路径,所以要获得完整路径,您可以使用os.path.join(prjDir,d)

import os 
def mk_prjDir(): 
    print "Checking to see if", prjDir, "exists.." 
    dirList = os.listdir(prjDir) 
    for d in dirList: 
     if os.path.isdir(os.path.join(prjDir,d)): 
      print (prjDir, "exists!") 
     else: 
      print (prjDir, "does not exist!") 
mk_prjDir() 

更新:我想我误解了你的问题,如果你只是想检查目录是否存在那就试试这个:

def mk_prjDir(): 
    print "Checking to see if", prjDir, "exists.." 
    if os.path.isdir(prjDir): 
     print (prjDir, "exists!") 
    else: 
     print (prjDir, "does not exist!") 
+0

@JacobColeman我更新了我的解决方案。 –

+0

我注意到的唯一情况是,它似乎没有正确输出文本,我得到了 '('/'directory','does not exist!')'作为输出,而不是只输出 '/ directory不存在!' 为什么会这样? –

+0

我尝试过使用和不使用引号,使用和不使用括号等。 –

0

os.listdir(dir)返回目录中找到的文件列表dir。如错误所示,该目录不存在,因此,显然,listdir无法列出其内容。

你为什么要做这个循环?只需使用os.path.isdir来测试您的目录是否存在。

+0

哦,好吧。谢谢。 –

+0

由于无知,我在使用循环;) –