import os import os.path import datetime from ftplib import FTP import gnupg import config import sys import pdb if os.name =='nt': root = "//WDsentinel/share/Daily" elif os.name == 'posix': root = '/home/share/Daily' def download_data(workdate): ftp = FTP('ftp.globeop.com') ftp.login('srntsftp', config.ftp_password) ftp.cwd('outgoing') files = ftp.nlst() globeopdate = datetime.date.strftime(workdate, '%Y%m%d') pnlfiles = [filename for filename in files if "csv" in filename and \ globeopdate in filename and \ "Profit" in filename] valuationfiles = [filename for filename in files if "csv" in filename and \ globeopdate in filename and \ "Valuation" in filename] pnlfile = sorted(pnlfiles, reverse=True)[0] valuationfile = sorted(valuationfiles, reverse=True)[0] if pnlfile: if not os.path.exists(os.path.join(root, str(workdate), "Reports")): os.makedirs(os.path.join(root, str(workdate), "Reports")) for filename in [pnlfile, valuationfile]: with open(os.path.join(root, str(workdate), "Reports", filename), "wb") as fh: ftp.retrbinary('RETR ' + filename, fh.write) print("downloaded {0}".format(filename)) if os.name=='nt': gpg = gnupg.GPG(gpgbinary = r'"c:\\Program Files (x86)\\GNU\\GnuPG\\gpg2.exe"', gnupghome = os.path.join(os.getenv('APPDATA'), "gnupg")) elif os.name == 'posix': gpg = gnupg.GPG(gnupghome = os.path.join(os.getenv('HOME'), '.gnupg')) gpg.encoding = 'utf8' for filename in [pnlfile, valuationfile]: if "Profit" in filename: newfilename = "Pnl.csv" else: newfilename = "Valuation_Report.csv" with open(os.path.join(root, str(workdate), "Reports", filename), "rb") as fh: gpg.decrypt_file(fh, output = os.path.join(root, str(workdate), "Reports", newfilename), passphrase=config.key_password) os.remove(os.path.join(root, str(workdate), "Reports", filename)) if __name__=="__main__": if len(sys.argv) > 1: workdate = datetime.datetime.strptime(sys.argv[1], "%Y-%m-%d").date() else: workdate = datetime.date.today() download_data(workdate)