0

我正在尝试编写一段快速的代码,它将检查目录是否存在,如果存在,它将打印它是否存在,如果它确实请求覆盖权限,并且如果不提示创建目录。

这是我到目前为止所拥有的:

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 是一个错字,但错误仍然存​​在。

我想尝试捕获该异常。我应该使用 while == True: 和 try/except 吗?如果是这样,那看起来像什么?

4

3 回答 3

0

另请参阅Python 中变量和函数名称的命名约定是什么?

def mk_prjDir():
    print "Checking to see if", prjDir, "exists.."
    if os.path.isdir(prjDir):
        print (prjDir, "exists!")
    else:
        print (prjDir, "does not exist!")
于 2013-05-30T17:15:03.243 回答
0

首先prjDir必须是完整路径prjDir,即“\home\my_direc\”,否则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!")
于 2013-05-30T17:17:33.790 回答
0

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

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

于 2013-05-30T17:14:27.913 回答