Python:如何遍历文件夹和文件并在数组中索引它们

时间:2015-03-24 13:08:02

标签: python arrays numpy

我有一堆文件夹,每个文件夹包含一组和相同数量的文件。我想使用python循环遍历每个文件夹并对每个文件进行一些分析。我想将分析结果存储在一个numpy数组中。

例如,假设我们有3个文件夹,每个文件夹包含5个文件。我希望分析结果存储在数组results=np.zeros((3,5))

这是一个接近我想要的代码片段,但不正确。

results=np.zeros((3,5))
dircount=0
filecount=0
for root, dirs, files in os.walk(ROOTFOLDER):
  for dir in root:
    for file in dirs:
      result[dircount,filecount]=#do some analysis with file
      filecount=filecount+1
    dircount=dircount+1
    filecount=0
print result

我必须承认,我并不完全了解os.walk是如何工作的,但对于涉及循环文件和文件夹的工作来说似乎很好。

2 个答案:

答案 0 :(得分:1)

os.walk()完成了您手动尝试的大部分内容:

results=np.zeros((3,5))
dircount=0
for root, dirs, files in os.walk(ROOTFOLDER):
    filecount = 0
    for f in files:
        #  absolute filename is os.path.join(root, f)
        result[dircount,filecount] = #do some analysis with file
        filecount += 1
    dircount += 1       
print result

主循环将递归地向下遍历dirs中的所有文件夹,从而获得该文件夹树中的所有文件。

答案 1 :(得分:1)

您可以在此使用os.walk

results=np.zeros((3,5))
dircount=0
for root, dirs, files in os.walk(ROOTFOLDER):
    filecount = 0
    for f in files:
        #  absolute path is os.path.join(root,f)
        result[dircount,filecount]
        filecount += 1
    dircount += 1       

打印结果

如果您需要以递归方式在文件夹中填写完整的files_list

files_list = [os.path.join(folder,i) for folder, subdirs, files in os.walk(ROOTFOLDER) for i in files]