Python字典,文件夹和文件的结构,但在两个字典中



我正在搜索一种算法来完成一项工作。基本上我从用户那里得到一个输入,源目录。我想创建两个不同的词典,一个保存文件夹的子文件夹,另一个保存文件夹的文件。例如:

我有一个文件夹"文件夹",里面包括一个名为:log.txt的文本文件和3个子文件夹,文件夹1,文件夹2和文件夹3。在文件夹2中,有一个名为txt1的文本文件.txt另一个名为子文件夹的文件夹,在这个子文件夹中有一张名为:pic的图片.png

folder->log.txt, folder1, folder2->(txt.txt, subfolder->pic.png), folder3

我想要的是字典看起来像这样:

folders = {'folder1':'', 'folder2': 'subfolder', folder3}
files = {'log.txt':'', 'txt.txt': 'folder2', 'pic.png':'folder2/subfolder'}
通常,我需要的是文件夹和子文件夹

的清晰字典,以便于创建正确的文件夹和子文件夹。然后文件的字典要清楚文件拥有的位置。如果您有其他文件的字典结构,没关系,如果您认为更简单快捷。提前谢谢你。

编辑:我正在运行Mac OS X,带有python 3

编辑 2:

dirs = [d for d in os.listdir(source) if os.path.isdir(os.path.join(source, d))]
for folder in dirs:
    tmp_source = source + folder
    dirs2 = [d for d in os.listdir(tmp_source) if os.path.isdir(os.path.join(tmp_source, d))]
    if dirs2 != []:
       print('Folder: ', dirs2, 'is not empty')
    dic[folder] = dirs2

下面的代码将递归地遍历根文件夹,并将每个文件夹(包括根文件夹)的文件名保存在字典中,并将键作为文件夹路径。

import os
root_folder = r'C:UsersSteinarGoogle DriveKodeYmsetesttest'
content = {}
for root, dirs, files in os.walk(root_folder):
    for subdir in dirs:
        content[os.path.join(root, subdir)] = []
    content[root] = files
# Print out the content dict    
for folder, filenames in content.items():
    print 'Folder: {}'.format(folder)
    print 'Filenames:'
    for filename in filenames:
        print '-> {}'.format(filename)

使用上述输入,此脚本输出正确的文件夹结构。

Folder: C:UsersSteinarGoogle DriveKodeYmsetesttesttest2
Filenames:
-> test2.txt
Folder: C:UsersSteinarGoogle DriveKodeYmsetesttest
Filenames:
-> test.txt
Folder: C:UsersSteinarGoogle DriveKodeYmsetesttesttest2test3test4
Filenames:
Folder: C:UsersSteinarGoogle DriveKodeYmsetesttesttest2test3
Filenames:
-> test3.txt

如果要重建文件夹结构,只需遍历content.keys(),然后创建每个文件夹。

最新更新