python对文件排序

#!/usr/bin/env python
import os,datetime  


file_date = dict()


base_dir = '/SE/topwaf/vulnerability-scan/history/'  
list = os.listdir(base_dir)  


filelist = []  
for i in range(0, len(list)):  
    path = os.path.join(base_dir,list[i])  
    if os.path.isfile(path):  
filelist.append(list[i])  
    for i in range(0, len(filelist)):  
        path = os.path.join(base_dir, filelist[i])  
    if os.path.isdir(path):  
        continue  
    timestamp = os.path.getctime(path)  
    #print timestamp  
    date = datetime.datetime.fromtimestamp(timestamp)  
    #print list[i],'   ',date.strftime('%Y-%m-%d %H:%M:%S')  
    file_date[list[i]] = timestamp
    ts1 = os.stat(path).st_ctime  
    #print ts1  
#date = datetime.datetime.fromtimestamp(timestamp)  
#print list[i],'aa',date.strftime('%Y-%m-%d %H:%M:%S')  
orderlist= sorted(file_date.items(), key=lambda dict:dict[1])
#print file_date
print orderlist
Python中可以通过不同方式实现文件内容排序,以下是几种常见的实现方法: ### 按时间排序文件列表 可以使用Python内置的`sorted()`函数对文件列表按时间顺序排序。代码如下: ```python # 假设 file_info_list 是包含文件信息的列表,每个元素是一个字典,包含文件的年、月、日、时、分、秒和文件名 file_info_list = [ {"year": 2024, "month": 1, "day": 1, "hour": 12, "minute": 0, "second": 0, "file_name": "file1.txt"}, {"year": 2024, "month": 1, "day": 2, "hour": 10, "minute": 30, "second": 0, "file_name": "file2.txt"} ] sorted_file_info_list = sorted(file_info_list, key=lambda x: (x["year"], x["month"], x["day"], x["hour"], x["minute"], x["second"])) sorted_file_list = [x["file_name"] for x in sorted_file_info_list] print(sorted_file_list) ``` 上述代码通过`sorted()`函数和自定义的排序键,对文件信息列表按时间排序,最后提取出排序后的文件名列表 [^1]。 ### 按文件名中的数字排序文件名中包含数字,可通过正则表达式提取数字部分并按数字排序。代码如下: ```python import os import re base_dir = "imgs//" file_list = os.listdir(base_dir) file_list.sort(key=lambda x: int(str(re.findall("\d+", x)[0]))) for file in file_list: print(file) ``` 上述代码使用`os.listdir()`获取指定目录下的文件列表,通过`re.findall()`提取文件名中的数字部分,然后按数字排序并输出 [^3]。 ### 大文件拆分排序再合并 对于大文件,可先将其拆分成多个小文件,对每个小文件排序后再合并。代码如下: ```python def save_file(l, fileno): filepath = f"/home/xxx/{fileno}" f = open(filepath, 'a') for i in l: f.write(f"{i}\n") f.close() return filepath def split_file(file_path, block_size): f = open(file_path, 'r') fileno = 1 files = [] while True: lines = f.readlines(block_size) if not lines: break lines = [int(i.strip()) for i in lines] lines.sort() files.append(save_file(lines, fileno)) fileno += 1 return files # 示例调用 file_path = "large_file.txt" block_size = 1024 sorted_small_files = split_file(file_path, block_size) print(sorted_small_files) ``` 上述代码定义了`save_file()`和`split_file()`函数,将大文件拆分成多个小文件,对每个小文件进行排序并保存,最后返回排序后的小文件列表 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值