加入读取的文件名是字符串,对其字母或者数字进行排序
时间: 2024-03-09 22:50:51 浏览: 51
好的,如果要对文件名进行排序,可以使用 Python 中的 `sorted()` 函数。默认情况下,`sorted()` 函数按照 ASCII 码的顺序进行排序,这意味着数字会排在字母前面。如果需要按照数字、字母混合的顺序进行排序,则可以使用 `key` 参数来指定排序规则。
下面是修改后的代码:
```python
import os
# 设置要读取的文件夹路径
folder_path = '/path/to/folder'
# 定义文件类型和对应的文件列表
file_types = {}
# 遍历文件夹中所有文件
for filename in os.listdir(folder_path):
# 获取文件的完整路径
filepath = os.path.join(folder_path, filename)
# 判断文件是否为普通文件
if os.path.isfile(filepath):
# 获取文件扩展名
file_extension = os.path.splitext(filename)[1].lower()
# 将文件名添加到对应类型的列表中
if file_extension in file_types:
file_types[file_extension].append(filename)
else:
file_types[file_extension] = [filename]
# 对每种类型的文件名列表进行排序
for file_extension in file_types:
file_types[file_extension] = sorted(file_types[file_extension], key=lambda x: (int(''.join(filter(str.isdigit, x))), x))
# 打印每种类型的文件名列表
for file_extension in sorted(file_types.keys()):
print(file_extension)
for filename in file_types[file_extension]:
print(" {}".format(filename))
```
在这个版本的代码中,我在遍历完所有文件之后对每种类型的文件名列表进行了排序并且指定了排序规则。这里使用了一个 lambda 函数,首先提取文件名中的数字部分,然后将其转换为整数进行比较,如果文件名中没有数字,则按照字母顺序进行比较。
阅读全文