Top/Devel/Python

Python の変更点はてなブックマーク


#code(python,nonumber,nooutline){{
#!/usr/bin/env python

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()
#	if p.returncode == 2:
#		if '1219' in p.communicate()[1]:
#			disconnect_netdrive(host)
#			connect_netdrive(host, username, password)


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()

#	connect_netdrive('z:', 'host', 'username', 'password')

#	src = r'\\parm\users\foobar\desktop\readme.txt'
#	dst = r'C:\users\foobar\desktop\readme2.txt'
#	shutil.copy2(src, dst)

	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)
}}
差分 一覧