• python批量提取eml附件


    从批量eml文件中提取附件,使用方式如下

    代码如下

     1 import email
     2 import os
     3 import sys
     4 
     5 #获取eml附件信息
     6 def Get_Annex_Message(FilePath, Annex_Path):
     7     global sum
     8     try:
     9         fp = open(FilePath, 'rb')        #打开任意格式文件,通过email库来判断是否为eml文件
    10         msg = email.message_from_binary_file(fp)
    11         for part in msg.walk():            #循环信件中的每一个mime的数据块
    12             if part.get_content_maintype() == 'multipart':
    13                 continue
    14             Annex_name = part.get_filename()
    15             if Annex_name:        #如果附件存在名字
    16                 Annex_name = str(sum) + '.' + Annex_name
    17                 fp = open(os.path.join(Annex_Path, Annex_name), 'wb')
    18                 fp.write(part.get_payload(decode=True))
    19                 sum += 1
    20                 
    21     except Exception as e:
    22         print(e)
    23         return
    24         
    25 #递归文件夹下所有文件
    26 def List_Filepath(Eml_Path, Annex_Path):
    27     for parent,dirnames,filenames in os.walk(Eml_Path): #遍历文件夹
    28         for dirname in dirnames:        #对文件夹进行递归
    29             List_Filepath(dirname, Annex_Path)
    30         for filename in filenames:        #r对文件进行判断
    31             FilePath = os.path.join(parent,filename)
    32             Get_Annex_Message(FilePath, Annex_Path)
    33         
    34 #创建目的文件夹
    35 def Create_Dir(Annex_Path):
    36     if os.path.exists(Annex_Path):
    37         print("dir exists, Annex file will create in %s" % Annex_Path)
    38     else:
    39         os.mkdir(Annex_Path)
    40         
    41 #主函数
    42 def main():
    43     global sum 
    44     sum = int(1)
    45     Eml_Path = sys.argv[1]        #第一个参数为eml所在文件夹
    46     Annex_Path = sys.argv[2]    #第二个参数为eml附件输出的路径
    47     Create_Dir(Annex_Path)        #创建保存附加的文件夹
    48     List_Filepath(Eml_Path, Annex_Path)        
    49 
    50 if __name__ == "__main__":
    51     main()
    52     
  • 相关阅读:
    kali系统安装和CVE201712615测试
    一个项目管理之挣值管理计算题解答
    设置.md文件默认用Typora打开
    操作系统进程
    mysql 高可用性
    如何使用Docker构建前端项目
    Rancher前端服务发布
    函数式接口和@FunctionalInterface
    Mac 手动安装 bee工具
    jenkins配置gitlab
  • 原文地址:https://www.cnblogs.com/QKSword/p/10777075.html
Copyright © 2020-2023  润新知