diff --git a/.gitignore b/.gitignore index 8e29d55..54af45d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ pyftpdlib_example.py prova.py dist/FtpCsvReceiver +prova1.py diff --git a/FtpCsvReceiver.py b/FtpCsvReceiver.py index cba9bc5..1fe44fa 100755 --- a/FtpCsvReceiver.py +++ b/FtpCsvReceiver.py @@ -2,13 +2,12 @@ import sys import os +import re import pika import logging import argparse from asebat.timefmt import timestamp_fmt as ts -from pprint import pprint - from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer from pyftpdlib.authorizers import UnixAuthorizer @@ -17,27 +16,49 @@ from pyftpdlib.filesystems import UnixFilesystem class ASEHandler(FTPHandler): def on_file_received(self, file): - with open(file, "r") as file_csv: - for i, line in enumerate(file_csv.readlines(4096), 1): - if i == 2: - unit_type, unit_name = line.strip('\n').replace(";","").replace(",","").split(" ") - logging.info("PID {:>5} >> {} {}".format(os.getpid(), unit_type.upper(), unit_name.upper())) - break - file_csv.close - path, filename_ext = os.path.split(file) - filename, file_extension = os.path.splitext(filename_ext) - new_path = '/home/' + self.username + '/received/' + unit_name.upper() + '/' - new_filename = new_path + filename + '_' + str(ts.timestamp("tms") + file_extension) - try: - os.makedirs(new_path) - logging.info("PID {:>5} >> path {} created.".format(os.getpid(), new_path)) - except FileExistsError: - logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), new_path)) - try: - os.rename(file, new_filename) - logging.info("PID {:>5} >> {} moved into {}.".format(os.getpid(), filename_ext, new_filename)) - except OSError: - logging.error("PID {:>5} >> Error to move {} into {}.".format(os.getpid(), filename_ext, new_filename)) + path, filenameExt = os.path.split(file) + filename, fileExtension = os.path.splitext(filenameExt) + + m = re.match( r'^(G\d\d\d)_(ID\d\d\d\d)_(DT\d\d\d\d)_(\d\d)(\d\d)(\d\d\d\d)(\d\d)(\d\d)(\d\d)$', filename, re.I) + if m : + unitType = m.group(1).upper() + unitName = m.group(2).upper() + toolName = m.group(3).upper() + toolType = "N/A" + fileDate = m.group(6) + "/" + m.group(5) + "/" + m.group(4) + fileTime = m.group(7) + ":" + m.group(8) + ":" + m.group(9) + else : + with open(file, "r") as fileCsv: + try: + for i, line in enumerate(fileCsv.readlines(4096), 1): + if i == 1: + m1 = re.match( r'File Creation Date: (\d*\/\d*\/\d*)\s(\d*:\d*:\d*).*', line, re.I ) + fileDate = m1.group(1) + fileTime = m1.group(2) + if i == 2: + unitType, unitName = line.strip('\n').replace(";","").replace(",","").split(" ") + if i == 6: + m6 = re.match( r'SD path: .*\/.*\/(.*)\/(.*)\..*', line, re.I ) + toolType = m6.group(1) + toolName = m6.group(2) + break + except: + logging.error("PID {:>5} >> Error: {}.".format( os.getpid(), sys.exc_info()[1])) + fileCsv.close + + logging.info("PID {:>5} >> {} - {} - {} - {} - {} - {}.".format(os.getpid(), unitType.upper(), unitName.upper(), toolName.upper(), toolType.upper(), fileDate, fileTime )) + newPath = '/home/' + self.username + '/received/' + unitName.upper() + '/' + newFilename = newPath + filename + '_' + str(ts.timestamp("tms") + fileExtension) + try: + os.makedirs(newPath) + logging.info("PID {:>5} >> path {} created.".format(os.getpid(), newPath)) + except FileExistsError: + logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), newPath)) + try: + os.rename(file, newFilename) + logging.info("PID {:>5} >> {} moved into {}.".format(os.getpid(), filenameExt, newFilename)) + except OSError: + logging.error("PID {:>5} >> Error to move {} into {}.".format(os.getpid(), filenameExt, newFilename)) def on_incomplete_file_received(self, file): # remove partially uploaded files