Python无法识别目录os.path.isdir()

时间:2010-09-21 14:45:47

标签: python file-io path directory

我有以下Python代码来删除目录中的文件。 由于某种原因,我的.svn目录未被识别为目录。

我得到以下输出:

  

.svn不是目录

任何想法都会受到赞赏。

def rmfiles(path, pattern):
    pattern = re.compile(pattern)
    for each in os.listdir(path):
        if os.path.isdir(each) != True:
            print(each +  " not a dir")
            if pattern.search(each):
                name = os.path.join(path, each)
                os.remove(name)

3 个答案:

答案 0 :(得分:37)

您需要在检查之前创建完整路径名:

if not os.path.isdir(os.path.join(path, each)):
  ...

答案 1 :(得分:2)

你需要在os.path.join中使用找到的文件/目录调用listdir的路径,即

for each in os.listdir(path):
    if os.path.isdir(os.path.join(path, each)):
        ....

如果你没有以这种方式创建绝对路径,那么你将测试你当前的工作目录,这可能是没有svn目录的。

另外,不要显式比较布尔值。如果将它作为布尔表达式处理(某些函数可能返回非真/假真值,即无或实例)

答案 2 :(得分:0)

您也可以切换到目标目录,而不是构建绝对路径。

def rmfiles(path, pattern):
    pattern = re.compile(pattern)
    oldpath = os.getcwd()     # <--
    os.chdir(path)            # <--
    try:
      for each in os.listdir('.'):
        if os.path.isdir(each) != True:
            print(each +  " not a dir")
            if pattern.search(each):
                name = os.path.join(path, each)
                os.remove(name)
    finally:
      os.chdir(oldpath)       # <--