|
import sys
import subprocess
import shutil
import os
import os.path
import time
import datetime
import zipfile
import tempfile
def connect_netdrive(drive, host, username, password):
cmd = 'net use ' + drive + ' ' + r'\\' + host + ' /user:' + username + ' ' + password
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.wait()
def disconnect_netdrive(drive):
cmd = 'net use ' + drive + ' /delete /y'
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.wait()
def is_target_with_name(src_file, today):
if src_file.endswith('.zip') \
and (today in src_file) \
and ('env.properties' in src_file):
return True
return False
def is_target_with_time(src_full_path, start_time, end_time):
adj_time = 300
file_time = os.stat(src_full_path).st_mtime
if (file_time > start_time - adj_time) \
and (file_time < end_time + adj_time):
return True
return False
def read_keys_from_conf():
keys = []
key_file = file('keys.txt', 'r')
key = key_file.readline()
while key:
keys.append(key.rstrip('\n'))
key = key_file.readline()
key_file.close()
return keys
def write_dst_file(src_full_path):
keys = read_keys_from_conf()
arc_file = zipfile.ZipFile(src_full_path, 'r')
for inner_file in arc_file.namelist():
unarc_file = tempfile.TemporaryFile()
unarc_file.write(arc_file.read(inner_file))
src_base = os.path.basename(src_file)
inner_base = os.path.basename(inner_file)
dst_file = file(src_base + '_' + inner_base, 'wb')
buf = []
unarc_file.seek(0)
line = unarc_file.readline()
while line:
for key in keys:
if key in line:
buf.append(line)
line = unarc_file.readline()
unarc_file.close()
buf.sort()
dst_file.write(''.join(buf))
dst_file.close()
arc_file.close()
if __name__ == '__main__':
start_time = time.time()
time.sleep(2)
end_time = time.time()
src_dir = r'C:\users\foobar\desktop\bbb'
if not os.path.isdir(src_dir):
sys.exit('dir did not exists.')
today = datetime.date.today().strftime('%Y%m%d')
src_files = os.listdir(src_dir)
for src_file in src_files:
if is_target_with_name(src_file, today):
src_full_path = os.path.join(src_dir, src_file)
if is_target_with_time(src_full_path, start_time, end_time):
write_dst_file(src_full_path)
|