在python中将目录的每个文件的路径转换为数组

时间:2014-08-03 16:39:56

标签: python arrays file file-io filepath

我试图从Data文件夹中放入数组files[]每个文件的路径但是当我尝试进入子文件夹时,我希望它能够下到数据文件的末尾,因为例如,我可以读取主文件夹Data的子文件夹中的文件,我试图将每个文件的所有路径列表放入一个数组但是它没有深入它不访问数据子文件夹的子文件夹没有写循环。我想要的是一个循环,它在Data文件夹中有无限的文件深度,所以我可以获得所有的文件路径。

例如,这就是我得到的:

['Data/DataReader.py', 'Data/DataReader - Copy.py', 'Data/Dat/DataReader.py', 'Data/fge/er.txt']

这就是我想要的,但它仍然可以进入更深层的文件夹:

['Data/DataReader.py', 'Data/DataReader - Copy.py', 'Data/Dat/DataReader.py', 'Data/fge/er.txt', 'Data/fge/Folder/dummy.png', 'Data/fge/Folder/AnotherFolder/data.dat']

这是我当前的路径,我需要添加或更改什么?

import os
from os import walk

files = []
folders = []
for (dirname, dirpath, filename) in walk('Data'):
    folders.extend(dirpath)
    files.extend(filename)
    break

filecount = 0
for i in files:
    i = 'Data/' + i
    files[filecount] = i
    filecount += 1

foldercount = 0
for i in folders:
    i = 'Data/' + i
    folders[foldercount] = i
    foldercount += 1

subfolders = []
subf_files = []
for i in folders:
    for (dirname, dirpath, filename) in walk(i):
        subfolders.extend(dirpath)
        subf_files.extend(filename)
        break

    subf_files_count = 0
    for a in subf_files:
        a = i + '/'+a
        files = files
        files.append(a)
        print files
    subf_files = []

print files
print folders

非常感谢!

1 个答案:

答案 0 :(得分:4)

不明白你想做什么,特别是为什么你在第一个元素之后打破你的walk

import os

files = []
folders = []
for (path, dirnames, filenames) in os.walk('Data'):
    folders.extend(os.path.join(path, name) for name in dirnames)
    files.extend(os.path.join(path, name) for name in filenames)

print files
print folders