zoukankan      html  css  js  c++  java
  • 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     
  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/QKSword/p/10777075.html
Copyright © 2011-2022 走看看