本文主要是介绍Python使用总结之获取文件夹下的所有文件,并按照文件编号排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Python使用总结之获取文件夹下的所有文件,并按照文件编号排序
问题描述: 使用python获取到某个文件夹下的所有文件后,要对文件进行处理,但是需要先对列表中的文件进行排序,文件夹中文件有编号,根据他们的编号进行排序,然后进行处理。
直接使用sort()进行排序时,由于编号有11,21等比较多,会导致11,11排到2的前面,所以我们需要通过自定义方法来处理文件,并根据结果进行排序。
1. 获取文件夹下的文件列表
def get_file_paths(directory):file_paths = [] # 初始化一个列表来存储文件路径for filename in os.listdir(directory): # 遍历目录中的文件和子目录filepath = os.path.join(directory, filename) # 将目录路径和文件名结合起来if os.path.isfile(filepath): # 检查是否是文件# 转换文件路径为绝对路径filepath = os.path.abspath(filepath)file_paths.append(filepath) # 如果是文件,则将其路径添加到列表中return file_paths
2.编写自定义函数,根据文件编号排序
这里的split_tag可以替换为你的文件名称规则对应的序号提取条件
def file_sort_by_number(file_name, split_tag=r'_(\d+)\.pcm'):"""将文件列表按照编号排序:param file_name: 文件名称:param split_tag: 排序编号获取规则:return:"""# 正则匹配编号match = re.search(split_tag, file_name)# 返回排序的数字return int(match.group(1)) if match else 0
3.使用sort()进行文件排序
# key为文件的排序规则
file_paths.sort(key=file_sort_by_number)
4.分析总结
- 因为默认的排序条件不满足我们的排序要求,所以我们需要自定义排序规则去进行文件排序。
- sort() 接收一个key参数作为排序方法,并根据方法的返回结果,作为排序的条件。
- 在file_sort_by_number方法中,我们根据文件的名称规则,将文件的编号提取出来,并且将编号转为数字。
- 之后让文件根据这个数字的大小进行排序,最终得到的就是我们想要的结果。
这篇关于Python使用总结之获取文件夹下的所有文件,并按照文件编号排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!