Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Wed Sep 25 10:16:33 2019
  4.  
  5. @author: jeffrey.garcia
  6. """
  7.  
  8. import os
  9. import shutil
  10. import smtplib
  11.  
  12.  
  13. maxSize = 200000000
  14.  
  15. runningTotal = 0
  16.  
  17. sourceFiles = XXX
  18.  
  19. destinationFolder = XXX
  20.  
  21. rejectFolder = XXX
  22.  
  23. def sendemail(from_addr, to_addr_list, cc_addr_list,
  24. subject, message,
  25. login, password,
  26. smtpserver='smtp.gmail.com:587'):
  27. header = 'From: %s\n' % from_addr
  28. header += 'To: %s\n' % ','.join(to_addr_list)
  29. header += 'Cc: %s\n' % ','.join(cc_addr_list)
  30. header += 'Subject: %s\n\n' % subject
  31.  
  32. message = header + message
  33.  
  34. server = smtplib.SMTP(smtpserver)
  35. server.starttls()
  36. server.login(login,password)
  37. server.sendmail(from_addr, to_addr_list, message)
  38. server.quit()
  39.  
  40.  
  41. def get_filepaths(directory):
  42. """
  43. This function will generate the file names in a directory
  44. tree by walking the tree either top-down or bottom-up. For each
  45. directory in the tree rooted at directory top (including top itself),
  46. it yields a 3-tuple (dirpath, dirnames, filenames).
  47. """
  48. file_paths = [] # List which will store all of the full filepaths.
  49.  
  50. # Walk the tree.
  51. for root, directories, files in os.walk(directory):
  52. for filename in files:
  53. # Join the two strings in order to form the full filepath.
  54. filepath = os.path.join(root, filename)
  55. file_paths.append(filepath) # Add it to the list.
  56. break
  57. return file_paths
  58.  
  59. for root, directories, files in os.walk(destinationFolder):
  60. if len(files) == 0:
  61. newFiles = sorted(get_filepaths(sourceFiles), key=os.path.getctime)
  62. while runningTotal < maxSize:
  63. try:
  64. if len(newFiles) == 0:
  65. break
  66. if os.path.getsize(newFiles[0]) + runningTotal <= maxSize:
  67. filename = os.path.basename(newFiles[0])
  68. runningTotal += os.path.getsize(newFiles[0])
  69. shutil.move(newFiles[0], destinationFolder + filename)
  70. newFiles = sorted(get_filepaths(sourceFiles), key=os.path.getctime)
  71. continue
  72. if os.path.getsize(newFiles[0]) > maxSize:
  73. filename = os.path.basename(newFiles[0])
  74. sendemail(from_addr = "XXXX",
  75. to_addr_list = ["XXXX"],
  76. cc_addr_list = [""],
  77. subject = "EDI File Rejected: Exceeded Max Size",
  78. message = "A file larger than the EDI server limit has arrived and has been sent to the rejected folder: " + rejectFolder + "\n\n ================= File size: " + str(round(os.path.getsize(newFiles[0])/1000000)) + " MB\n\n ================= File name: " + filename,
  79. login = "XXXX",
  80. password = "XXX")
  81. shutil.move(newFiles[0], rejectFolder + filename)
  82. newFiles = sorted(get_filepaths(sourceFiles), key=os.path.getctime)
  83. continue
  84. if os.path.getsize(newFiles[0]) + runningTotal > maxSize:
  85. runningTotal = maxSize
  86. break
  87. else:
  88. break
  89. except IndexError as ex:
  90. runningTotal += 200000001
  91. newFiles = sorted(get_filepaths(sourceFiles), key=os.path.getctime)
  92. else:
  93. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement