Python文件名排序或文件排序问题

在读取文件夹里的文件时,有时需要顺序读取文件,那python如何顺序读取文件呢(这些都是楼主实际编程过程中遇到的问题,想把细节记录下来),下面会给出一些参考方式;

特此说明:在编辑本文的时候,楼主也参考了一些文献,如有侵权,联系楼主,本人立马删帖。

 

在python环境中提供两种排序方案(题主知道的):

  1. 用库函数sorted()对字符串排序,它的对象是字符

  2. 用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名‘屏蔽’


    20200406更新,这两个函数都是对字符字典排序

(1)首先:我测试的文件夹是/img/,里面的文件都是图片,如下图所示

(2)测试库函数sorted(),直接贴出代码:

import numpy as np
import os

img_path='./img/'

img_list=sorted(os.listdir(img_path))	#文件名按字母排序
img_nums=len(img_list)
for i in range(img_nums):
    img_name=img_path+img_list[i]
    print(img_name)

运行效果如下:

从图片可以清晰的看出,文件名是按字符排序的

(3)测试函数sort(),代码:

import numpy as np
import os
img_path='./img/'

img_list=os.listdir(img_path)
img_list.sort()
img_list.sort(key = lambda x: int(x[:-4])) ##文件名按数字排序
img_nums=len(img_list)
for i in range(img_nums):
    img_name=img_path+img_list[i]
    print(img_name)

运行效果如下:

可以看出,文件名是按数字排序的;顺便提下,sort函数中用到了匿名函数(key = lambda x:int(x[:-4])),其作用是将后缀名'.jpg'“屏蔽”(因为‘.jpg’是4个字符,所以[:-4]的含义是从文件名开始到倒数第四个字符为止),具体看python的匿名函数和数组取值方式

 

  • 35
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
您好,可以使用Python内置的`sorted`函数和`os`模块来实现文件信息排序,具体步骤如下: 1. 使用`os.listdir`函数获取目标文件所有文件文件名,并保存在一个列表。 2. 遍历列表的每个文件名,使用`os.path.join`函数将文件名与目标文件夹路径拼接,获取文件的完整路径。 3. 使用`os.path.getmtime`函数获取文件的最后修改时间,并将该时间作为元组的第一个元素。 4. 将文件名和修改时间元组作为一个元素添加到另一个列表。 5. 使用`sorted`函数对文件名和修改时间元组的列表进行排序排序的关键字为元组的第一个元素(即修改时间)。 6. 遍历排序后的列表,输出排序后的文件名和修改时间信息。 下面是示例代码: ```python import os folder_path = "your/folder/path" # 目标文件夹路径 # 获取目标文件所有文件文件名 file_names = os.listdir(folder_path) # 遍历所有文件,获取文件名和修改时间信息 file_info = [] for name in file_names: file_path = os.path.join(folder_path, name) # 文件的完整路径 mtime = os.path.getmtime(file_path) # 文件的最后修改时间 file_info.append((name, mtime)) # 将文件名和修改时间元组作为一个元素添加到列表 # 按照修改时间排序文件信息列表 sorted_file_info = sorted(file_info, key=lambda x: x[1]) # 输出排序后的文件名和修改时间信息 for name, mtime in sorted_file_info: print(f"{name} - {mtime}") ``` 请将`your/folder/path`替换为目标文件夹的实际路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值