如何正确应用 RE 以从给定路径获取(文件或文件夹的)姓氏并将其打印在 Python 上?

How to correctly apply a RE for obtaining the last name (of a file or folder) from a given path and print it on Python?

我写了一段代码,它创建了一个字典,将当前路径中所有文件夹的绝对路径存储为 keys,并将其所有文件名存储为 。此代码仅适用于具有仅包含文件图像的文件夹的路径。这里:

import os
import re
# Main method
the_dictionary_list = {}

for name in os.listdir("."):
    if os.path.isdir(name):
        path = os.path.abspath(name)
        print(f'\u001b[45m{path}3[0m')
        match = re.match(r'/(?:[^\])[^\]*$', path)
        print(match)
        list_of_file_contents = os.listdir(path)
        print(f'3[46m{list_of_file_contents}')
        the_dictionary_list[path] = list_of_file_contents
        print('\n')
print('\u001b[43mthe_dictionary_list:3[0m')
print(the_dictionary_list)

问题是,我希望这个字典只存储最后的 文件夹名称 作为键而不是它的 绝对路径 ,所以我打算使用这个 re /(?:[^\])[^\]*$,它负责获取(来自给定路径的文件或文件夹的)姓氏,然后将这些姓氏作为键添加到 for 循环的字典中。

我想先测试一下上面的代码,看看它是否在做我想要的,但似乎并没有,match变量的值在每次迭代中都变成了None ,这对我来说没有意义,其他一切正常。

所以我想知道我在这里做错了什么。

我强烈推荐使用内置库 pathlib。您似乎对 f.name 部分感兴趣。这是作弊 sheet.

我决定重写上面的代码,以防只在当前目录(可以找到该程序的目录)中应用它。

import os
# Main method

the_dictionary_list = {}

for subdir in os.listdir("."):
    if os.path.isdir(subdir):
        path = os.path.abspath(subdir)
        print(f'\u001b[45m{path}3[0m')
        list_of_file_contents = os.listdir(path)
        print(f'3[46m{list_of_file_contents}')
        the_dictionary_list[subdir] = list_of_file_contents
        print('\n')
print('3[1;37;40mThe dictionary list:3[0m')
for subdir in the_dictionary_list:
    print('\u001b[43m'+subdir+'3[0m')
    for archivo in the_dictionary_list[subdir]:
        print("    ", archivo)
print('\n')
print(the_dictionary_list)

如果用户想 运行 双击特定位置的程序(我的个人情况

,这将很有用