如下图,获取sample_data路径下的文件夹名,其实这是我们希望得到的排序方式。
实际上,当我们直接使用sort排序时,得到的是:
import osinput_dir = r'./sample_data'
file_list = os.listdir(input_dir)
print(file_list)
file_list.sort() # 文件名 按字符串排序
print(file_list)
得到的输出是:
[‘file101.txt’, ‘file2.txt’, ‘file23.txt’, ‘file10.txt’, ‘file1.txt’, ‘file3.txt’]
[‘file1.txt’, ‘file10.txt’, ‘file101.txt’, ‘file2.txt’, ‘file23.txt’, ‘file3.txt’]
显然,排序后并不是我们需要的,在Python中,我们通过Lamda表达式定位到数字部分,这显然有一些局限性,因为数字在文件名中位置变化时,脚本也要作相应的改变。
file_list.sort(key=lambda x: int(x[4:-4])) # 文件名 按数字排序
print(file_list)
得到的输出是:
[‘file1.txt’, ‘file2.txt’, ‘file3.txt’, ‘file10.txt’, ‘file23.txt’, ‘file101.txt’]
代码在:
https://github.com/feelins/Python-linguistics
欢迎关注公众号:极地语音工作室;
CSDN博客:https://blog.csdn.net/shaopengfei