首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何按时间顺序重新排序mbox文件?

按时间顺序重新排序mbox文件可以通过以下几个步骤来实现:

  1. 解析mbox文件:首先需要解析mbox文件,提取出其中的邮件信息。可以使用Python的email库来解析mbox文件。
  2. 提取邮件时间:解析出的邮件信息中包含邮件的发送时间,可以使用Python的datetime库将时间字符串转换为datetime对象。
  3. 排序邮件:将邮件信息按照发送时间进行排序,可以使用Python的sorted函数进行排序。
  4. 生成新的mbox文件:将排序后的邮件信息重新生成一个新的mbox文件,可以使用Python的文件操作来实现。

下面是一个简单的Python代码示例:

代码语言:python
复制
import email
import datetime
import os

def parse_mbox(file_path):
    with open(file_path, 'rb') as f:
        msg = email.message_from_bytes(f.read())
        messages = []
        for part in msg.walk():
            if part.get_content_type() == 'message/rfc822':
                messages.append(email.message_from_bytes(part.get_payload()))
        return messages

def sort_messages(messages):
    return sorted(messages, key=lambda x: x['date'])

def generate_mbox(messages, output_path):
    with open(output_path, 'wb') as f:
        for msg in messages:
            f.write(b'From - ' + msg['from'].encode() + b'\n')
            f.write(b'Subject: ' + msg['subject'].encode() + b'\n')
            f.write(b'Date: ' + msg['date'].encode() + b'\n')
            f.write(b'\n' + msg.as_bytes() + b'\n')

def sort_mbox(input_path, output_path):
    messages = parse_mbox(input_path)
    sorted_messages = sort_messages(messages)
    generate_mbox(sorted_messages, output_path)

input_path = 'input.mbox'
output_path = 'output.mbox'
sort_mbox(input_path, output_path)

这个代码示例中,parse_mbox函数用于解析mbox文件,sort_messages函数用于按照发送时间排序邮件,generate_mbox函数用于生成新的mbox文件。最后,sort_mbox函数将这些函数组合起来,实现按时间顺序重新排序mbox文件的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

操作系统:第七章 文件管理

文件的建立时间:指最后一次的修改时间等。...无结构文件:是指由字符流构成的文件,故又称为是流式文件。 7.2.2 顺序文件 1. 逻辑记录的排序 串结构:各记录之间的顺序与关键字无关。通常由时间来决定。...顺序结构:文件中的所有记录关键字排列。可以关键字的长短或英文字母书写排序顺序结构的检索效率更高。 优点: 顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次操作 一大批记录。...为实现此要求,需要为顺序文件建立多个索引表,即为每一种可能成为检索条件的域(属性或关键字)都配置一张索引表。 在每一个索引表中,都相应的一种属性或关键字进行排序。 7.2.4 索引顺序文件 1....线性检索法 又称为顺序检索法。 假定用户给定的文件路径是/usr/ast/mbox,则查找过程: image-20210531094713478.png 2.

1K10

PHP中的IMAP扩展简单入门

三个参数也很直观,host 指定邮箱的域名地址,并且可以直接指定连接到邮箱中的哪个文件夹。在这里我们直接进入的是收件箱。...新邮件 37 封,大小、获取时间、邮箱信息等内容。 读取操作邮件 最后就是我们的重头戏了,如何下载读取邮件以及进行一些简单地操作。...= 2) { imap_delete($mbox, $m); // 删除 imap_expunge($mbox); } if ($m == 3) {...所以需要对头文件进行一个 UTF-8 解码的过程,邮件内容则根据头信息中的 Content-Transfer-Encoding 字段查看对应的编码类型进行解码。...imap_delete() 函数用于删除邮件,imap_mail_move() 用于移动文件,调用这两个函数都需要使用 imap_expunge() 来将操作同步到线上。

1.4K20

直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践

本文原题“百度直播消息服务架构实践”,由百度APP消息中台团队原创分享于“百度Geek说”公众号,为了让文章内容更通俗易懂,本次已做排版优化和内容重新划分,原文链接在文末。...3)持续时间不同:IM群聊建立后,聊天持续时间可能比较长,几天到数月都有。而直播间大部分持续不超过几个小时。...而长连接重建连恢复时,直播业务层也需要监听连接恢复信号,重新加入组播mcast,以恢复组播mcast的消息通路。...; 4)每条消息可以设置已读状态; 5)一个消息信箱mbox,有唯一的信箱标识符mboxID; 6)一个消息信箱mbox是一个容器,存储有序的消息列表msgList;消息列表msgListmsgID排序的...; 7)消息信箱服务,对指定信箱mbox支持单条消息或批量消息的写入; 8)消息信箱服务,对指定信箱mbox支持基于msgID的单条消息或批量消息的查找; 9)消息信箱服务,对指定信息mbox支持从msgID-begin

76120

一次早期自动化构建的搭建过程

也因为腾讯web端项目基本上都是使用的CGI,所以花了不少时间写整套的自动化编译脚本(全部是perl写的),当然里面对研发提出了编译文件Makefile的规范(后面有原理)。...使用mkgen.pl读取源代码根目录下边的编译配置文件make.conf (这个文件中定义了要参加编译的子目录,以及这些目录间的依赖关系,即编译顺序,它可以通过makefile生成,也可以手工编写),在源代码根目录下生成全编译脚本...build_***.mail(其中***是build.sh的时间戳),邮件会放在约定好的发件箱/data/qzone_build/temp/mbox中 9....,因此只按照目录字母顺序做简单排序), 不含关键字的目录级别为0, 比如: platform/src/comm 级别 16 platform/src/c5a/c5atool 级别 4 main/src/...(选用当前系统时间),这个时间戳相当于build.sh的版本,不同版本的build.sh生成的log文件名不同,这些log的名称格式是: build_***.log其中***就是它的时间戳 2.5. writemail.pl

1.1K20

linuxunix实用基本命令小全

例如:% comm file1 file2 3.20排序文件 命令:sort 格式:sort [option] filename 功能:将制定的文件要求排序 选项:-r 字母倒排序...-n 数字的值从笑到大排序 -r 当前排序规则逆序排序 -f 不区分大小写排序 -d 典型顺序排序 注释:选项缺省时ascii码顺序排序 例如:% sort -nr file...选项: 注释:-k 制定关键字查询有关命令 例如:% man tar 4.21建立别名 命令:alias 格式:alias newname name 功能:用户可以将常用的命令用自己习惯的名称来重新命名...选项:-r 邮件先进先出顺序排序。...缺省时为后进先出顺序排序 -q 中断mail后不改变信箱内容 -p 显示mail每份邮件,不显示提示信息 -f 从邮件格式文件中读邮件 注释:mail命令: ?

53730

直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践

本文原题“百度直播消息服务架构实践”,由百度APP消息中台团队原创分享于“百度Geek说”公众号,为了让文章内容更通俗易懂,本次已做排版优化和内容重新划分,原文链接在文末。...3)持续时间不同:IM群聊建立后,聊天持续时间可能比较长,几天到数月都有。而直播间大部分持续不超过几个小时。...而长连接重建连恢复时,直播业务层也需要监听连接恢复信号,重新加入组播mcast,以恢复组播mcast的消息通路。...; 4)每条消息可以设置已读状态; 5)一个消息信箱mbox,有唯一的信箱标识符mboxID; 6)一个消息信箱mbox是一个容器,存储有序的消息列表msgList;消息列表msgListmsgID排序的...; 7)消息信箱服务,对指定信箱mbox支持单条消息或批量消息的写入; 8)消息信箱服务,对指定信箱mbox支持基于msgID的单条消息或批量消息的查找; 9)消息信箱服务,对指定信息mbox支持从msgID-begin

1.2K20

Python|关于简单插入排序的奥秘

前言 相信大家在生活中经常会遇到排序的问题,比如,如果你是超市工作人员,看到货架上的货品被顾客弄乱了,你一定会重新给货品排序,基本上是从小到大、从矮到高的顺序摆放。...在家里面,你也一定会给家里的物品按照自己喜欢的顺序进行摆放。在公司里,如果有大量文件,你也会按时间文件名、大小等等的方式给这些文件进行整理。当然还有很多这样的情况,那么我们为什么要进行排序呢?...排序不会浪费我们的时间吗?其实不然,排序是为了让东西更有连续性,或者更有规律性,能够方便我们的下一次使用,快速找到自己想要的东西,所以排序并不会浪费我们的时间,相反还会节约我们的时间。...那么在计算机中,也有排序哦!在计算机里面的排序则是为了让数据更加具有结构性,方便计算机对其处理。而小编今天想要分享的是:简单插入排序。...问题描述 把下面的打乱顺序的数,按照从小到大的顺序进行排列【1,3,5,22,4,11,55,66,40,7】 解决方案 插入排序,核心内容就是插入,即将一个个元素插入到序列中,最后得到自己想要的有序序列

32530

top命令的用法「建议收藏」

o键可以改变列的显示顺序a-z将相应的列向后移;A-Z将相应的列向左移。 F或者O键,然后按照a-z可以将进程按照相应的列进行排序,大写的R键可以将当前的排序倒转。...#top -b -d 2.5 -n 5>cur.txt 快速%CPU列排序:大写字母P 快速%MEM列排序:大写字母M 快速%TIME+列排序:大写字母T (默认降序,升序可使用R) ...选择显示列或者其他列:小写字母f 交换列显示顺序:小写字母o 选择需要排序的列:大写字母F 6、top命令显示过程中使用一些交互命令: Ctrl L:擦除并且重写屏幕 h或者?...r :重新安排一个进程的优先级。默认值是10,输入一个正值使优先级降低;输入一个负值使优先级升高。 S :切换到累计模式。 s :改变两次刷新的延迟时间。...P :根据CPU使用百分比大小进行排序。 T :根据时间或者累计时间进行排序。 W :写top配置文件的方法。将当前设置写入~/toprc文件中。

2.9K30

Linux常用命令(二)

日期时间命令 查看日期时间 date 查看当前系统时间 # date 格式化输出当前系统时间,如: # date +"%F %T" 另外还有许多格式化选项,详见 # date --help 查看日历...与联线用户通信 wall write mesg 向系统中的所有用户发送公告 # wall [message] 向登录到系统中的一个用户发送消息 # write [user] 拒绝接收消息 # mesg n 重新接收消息...默认结束符为换行符 e:从标准输入读取,使用readline库获取输入,此时用户可以使用退格键、方向键进行行编辑操作 n:指定读取的字符数 p:指定字符串输出到标准错误并读取输入 r:将读取到的字符串字段放到不同的变量中...s:先锁住屏幕,再从标准输入中读取字符 t:在指定时间内没有输入就结束读取状态 u:从指定的文件描述符中读取 显示并保存文本 tee 如: # ifconfig eth2 | tee eth2_info...使用一个秘密抄送列表 -b:使用一个抄送列表 查看邮件 # mail 参数: h:查看邮件标题 d:加序号可删除指定邮件 f:查看当前光标指向的邮件 n:跳转到指定序号的邮件 q:退出并将已经阅读的邮件存入 `~/mbox

62620

Linux Tree 树状目录显示工具 使用手册

tree -x 只保留在当前文件系统上 tree -L 级下降深层级目录 tree -R 达到最大等级时重新运行树 tree -P 模式只列出符合给定模式的文件...-R 当达到最大目录级别时,重新运行树。 -P 模式仅列出与给定模式匹配的那些文件。 -I 模式不列出与给定模式匹配的文件。...--filelimit# 不要使包含超过#个文件的dirs下降。 --timefmt 根据格式打印和格式化时间。 -o filename 输出到文件而不是stdout。...------- 排序选项 ------- -v 版本字母顺序文件进行排序。 -t 上次修改时间文件排序。...-c 上次状态更改时间文件排序。 -U 不排序文件。 -r 颠倒排序顺序。 --dirsfirst 在文件之前列出目录(-U禁用)。

2.8K20

理解PG如何执行一个查询-1

Sort算子通过一个或多个排序键对输入集重新排序来生成结果集。稍后更加详细描述每个查询算子。下面是一个简单执行计划示例: 可以看到复杂的查询分解为简单步骤。树底部的查询算子输入集是物理表。...CPU时间也是磁盘IO为单位来衡量,但通常是分数。例如处理单个元组需要的CPU时间量假定为单个磁盘IO的1/100th.你可以调整许多成本估算。每个算子都有不同的成本估算。...排序操作对顺序扫描产生的结果集进行重新排序,并将最终结果集返回给客户端应用程序。 注:ORDER BY子句在所有情况下都不需要排序操作。规划器/优化器可能决定它可以使用索引来对结果集进行排序。...其次,Seq Scan顺序返回行,而不是按排序顺序。索引扫描将索引顺序返回行。 并非所有索引都是可扫描的。可以扫描B-Tree、R-Tree和GiST索引类型;哈希索引不能。...如果结果集的大小超过sort_mem,Sort会将输入集分发到已排序工作文件的集合中,然后再次将工作文件重新合并在一起。

1.9K20

5.3 分布式 Git - 维护项目

维护项目 除了如何有效地参与一个项目的贡献之外,你可能也需要了解如何维护项目。...从技术的角度看,git am是为了读取 mbox 文件而构建的,mbox 是一种用来在单个文本文件中存储一个或多个电子邮件消息的简单纯文本格式。...如果有人使用 git send-email 命令将补丁以电子邮件的形式发送给你,你便可以将它下载为 mbox 格式的文件,之后将 git am 命令指向该文件,它会应用其中包含的所有补丁。...如果你所使用的邮件客户端能够同时将多封邮件保存为 mbox 格式的文件,你甚至能够将一系列补丁打包为单个 mbox 文件,并利用 git am 命令将它们一次性全部应用。...如果你正在利用一个 mbox 文件应用多个补丁,也可以在交互模式下运行 am 命令,这样在每个补丁之前,它会停住询问你是否要应用该补丁: $ git am -3 -i mbox Commit Body

56420

HDFS运行Balancer失败及问题解决办法

1.文档编写目的 ---- 本文主要讲述如何解决HDFS运行Balancer提示“Another Balancer is running..”导致Balancer失败的问题。...3.重新执行Balancer命令,可以正常执行数据均衡操作 ? 4.查看balancer.id文件内容,与实际结果一致,即运行balancer的主机为bigdata2 ?...3.3.相关建议 ---- 如果HDFS的Balancer在非正常情况下终止,建议在重新执行Balancer前,清除掉balancer.id这个文件。...Exiting...”这类异常问题,先查看“balancer.id”文件内容,检查是否有其他主机在运行Balancer,如果没有,则删除该文件重新执行Balancer即可恢复正常。.../hadoop-mapreduce-user/201601.mbox/%3CCANXtaKBEVjrZjBMY+rMbkScuMxqvNTX6fAuDpMwuNzvLC6taCA@mail.gmail.com

2.6K20

合并和排序 Linux 上的文件

在 Linux 上合并和排序文本的方法有很多种,但如何去处理它取决于你试图做什么:你是只想将多个文件的内容放入一个文件中,还是以某种方式组织它,让它更易于使用。...你所要做的就是输入 cat,然后你希望它们在合并文件中的顺序在命令行中列出这些文件。将命令的输出重定向到要创建的文件。如果指定名称的文件已经存在,那么文件将被覆盖。...例如,如果文件全部以 file 结束,如上所示,你可以进行如下操作: $ cat *file > allfiles 请注意,上面的命令将字母数字顺序添加文件内容。...例如,如果你要保留某些活动的日志,并且希望活动执行的顺序添加内容,则这非常有用。 上面命令中的 $$ 表示运行命令时的进程 ID。...选项还能让你日期对内容进行排序

3.2K30

我的第一本算法书

这里所说的特定问题多种多样,比如“将随意排列的数字从小到大的顺序重新排列”“寻找出发点到目的地的最短路径”,等等。 食谱和算法之间最大的区别就在于算法是严密的。...排列整数的算法:排序 ▶ 查找最小的数字并交换:选择排序 来看一个具体的算法示例吧。这是一个以随意排列的整数为输入,把它们从小到大的顺序重新排列的问题。这类排序问题我们将在第 2 章详细讲解。 ?...个数字便都从小到大的顺序排列了。只要将这个步骤重复 ? 次,那么所有的数字都将从小到大的顺序排列。 这便是我们将在 2-3 节中介绍的选择排序。不管输入的数字是什么、 ?...个数字构成的数列(不和前面生成的数列重复) ② 如果①中生成的数列从小到大的顺序排列就将其输出,否则回到步骤① 我们就把这个算法称为“全排列算法”吧。...也就是说,仅仅是对 50 个数字进行排序,若使用全排列算法,就算花费宇宙年龄的 ? 倍时间也得不出答案。 ? ▶ 使用选择排序算法进行排序 那么,使用前文提到的选择排序算法,情况又将如何呢?

1.1K20
领券