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     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM