我编写了这段代码,用于检查特定目录中的某些文件是否是更多文件或目录。
我的文件结构如下:
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),
我无法解释原因。有人可以帮我学习吗?
提前致谢。
答案 0 :(得分:-1)
您正在尝试为您的任务使用不正确的功能。
目录 中的os.listdir
返回包含目录中条目名称的列表 由路径给出。该列表按任意顺序排列。它不包括 特殊条目'。'和' ..'即使他们出现在 。目录
条目是任何类型的条目(文件,目录等)
您需要使用此功能:
os.walk(top,topdown = True,onerror = None,followlinks = False)
通过从上到下或从下到上走树来生成目录树中的文件名。对于以目录top(包括top本身)为根的树中的每个目录,它会产生一个3元组(dirpath,dirnames,filenames)。
Here是一个很好的用法示例