1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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)
|