更改目录时的Python递归目录列表

2024-10-01 15:42:33 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个问题,我需要你们这些python奇才的帮助

这是我正在使用的目录结构,但它们的名称是加密的。现在,我试图列出这些目录和文件,同时解密它们的名称。你知道吗

rootfolder
-subfolder
--subsubfolder
---file_in_subsubfolder
--file1_subfolder
-subfolder2
-file1
-file2

这是我的代码

for root, dirs, files in os.walk(rootfolder):
    dirname = os.path.basename(root)
    decrypted_dirname = decrypt(dirname)

    print os.path.join(os.path.dirname(root),decrypted_dirname)

    for f in files:
        print os.path.join(os.path.dirname(root), decrypted_dirname, decrypt(f))

我的输出是这样的。你知道吗

rootfolder/decrypted_subfolder
rootfolder/subfolder/decrypted_subsubfolder
rootfolder/subfolder/decrypted_subsubfolder/decrypted_file_in_subsubfolder
rootfolder/decrypted_subfolder2
rootfolder/decrypted_file1
rootfolder/decrypted_file2

问题是,第2行和第3行中的“子文件夹”没有解密。如何调整代码,以便解密文件夹并以递归方式正确列出它们。你知道吗


Tags: pathin目录名称osrootfile1file2
1条回答
网友
1楼 · 发布于 2024-10-01 15:42:33

正如@user3757614所建议的,一种方法是使用字典跟踪“解密的根路径”并重用它

示例:

decrypted_path_map = dict();
for root, dirs, files in os.walk(rootfolder):
    dirname = os.path.basename(root)
    decrypted_dirname = decrypt(dirname)
    parent_path =  decrypted_path_map.get(os.path.dirname(root),os.path.dirname(root))
    decrypted_path_map[root] =  os.path.join(parent_path,decrypted_dirname)

    for f in files:
        print os.path.join(decrypted_path_map[root],decrypt(f))

相关问题 更多 >

    热门问题