如何正确应用 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)
如果用户想 运行 双击特定位置的程序(我的个人情况)
,这将很有用
我写了一段代码,它创建了一个字典,将当前路径中所有文件夹的绝对路径存储为 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)
如果用户想 运行 双击特定位置的程序(我的个人情况)
,这将很有用