检查文件是Python 2.7.11中的目录还是常规文件

时间:2016-05-15 18:41:37

标签: python directory

我编写了这段代码,用于检查特定目录中的某些文件是否是更多文件或目录。

我的文件结构如下:

C:\Users\Desktop\pythonprograms
|-temp1
|-temp2
|-sample.py

import os

filepath = os.getcwd()
backslash = "\\"
allfiles = os.listdir(filepath)

for indexval in range(filelist):
   print "File  ", indexval, allfiles[indexval], type(allfiles[indexval])   
checkfileisdir = filepath + backslash
dirsavailable = [checkfileisdir + indexval for indexval in allfiles]
for checkfile in dirsavailable:
    print os.path.isdir(checkfileisdir)

上面的代码为目录和文件返回True。

此外,以下代码可以解决问题。我正在寻找解释而不是代码片段。

for indexval in range(filelist):
   print "File  ", indexval, allfiles[indexval], type(allfiles[indexval])           
   checkfileisdir = filepath + backslash + allfiles[indexval]
   print os.path.isdir(checkfileisdir),

我无法解释原因。有人可以帮我学习吗?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

您正在尝试为您的任务使用不正确的功能。

请阅读documentation

  

os.listdir

     

返回包含目录中条目名称的列表   由路径给出。该列表按任意顺序排列。它不包括   特殊条目'。'和' ..'即使他们出现在   。目录

目录 中的

条目是任何类型的条目(文件,目录等)

您需要使用此功能:

  

os.walk(top,topdown = True,onerror = None,followlinks = False)

     

通过从上到下或从下到上走树来生成目录树中的文件名。对于以目录top(包括top本身)为根的树中的每个目录,它会产生一个3元组(dirpath,dirnames,filenames)。

Here是一个很好的用法示例