我们可以使用Python中的正则表达式库re和sorted函数来做到这一点。具体来说,我们可以使用re.sub函数通过正则表达式匹配文件名末尾的数字,并将其转换为一个整数,然后将这些整数作为sorted函数的key参数。
以下是一个代码示例:
import re
# 只保留文件名,去掉路径和扩展名
def get_file_name(file_path):
return os.path.splitext(os.path.basename(file_path))[0]
# 从文件名中提取数字
def extract_number(file_name):
match = re.search(r'\d+$', file_name)
if match:
return int(match.group())
return 0
# 按数字排序文件列表
def sort_files_by_number(file_list):
return sorted(file_list, key=lambda x: extract_number(get_file_name(x)))
# 用法示例
file_list = ['file1.png', 'file2.png', 'file10.png', 'file11.png']
sorted_files = sort_files_by_number(file_list)
print(sorted_files)
在此示例中,sort_files_by_number函数将文件列表按数字值排序,然后将排序后的文件列表返回给调用方。我们使用get_file_name函数获取文件名,然后使用extract_number函数从文件名中提取数字。最后,我们使用sorted函数按提取出的数字进行排序。
输出:
['file1.png', 'file2.png', 'file10.png', 'file11.png']
我们可以看到,文件名已按数字值正确排序。
下一篇:按照文件名排列文件的问题