[python]파일포멧 변환

 
간단한 파일 변환 프로그램 개발..

아래과 같은 샘플파일을 받아서

[COL1]: 2013-04-17 11:42:32
[COL2]: 
[COL3]: 

[COL1]: 2013-04-17 11:42:34
[COL2]: aaaa
[COL3]: bbbb

아래의 포맷으로 변경

filename☆2013-04-17 11:42:32☆☆
filename☆2013-04-17 11:42:34☆aaaa☆bbbb

작성한 소스코드

# filename : format_trans.py
# -*- coding: utf-8 -*-
import optparse

def csvTrans(filename):
	f = file(filename, 'r')
	fw = open("res_"+filename, "w")
	linecount = 0
	res = dict()
	
	while True:
		line = f.readline()

		if not line  :
			if res.values() :
				fw.write(filename+"☆"+res["COL1"]+"☆"+res["COL2"]+"☆"+res["COL3"]+"\n")
				print(filename+"☆"+res["COL1"]+"☆"+res["COL2"]+"☆"+res["COL3"])
			break
		elif line == "\n" :
			fw.write(filename+"☆"+res["COL1"]+"☆"+res["COL2"]+"☆"+res["COL3"]+"\n")
			print(filename+"☆"+res["COL1"]+"☆"+res["COL2"]+"☆"+res["COL3"])
			res = dict()
		else :
			parsed_list = line.rstrip('\n').split(']: ')

			if parsed_list[0].find("COL1") > 0 :
				res["COL1"] = parsed_list[1]
			if parsed_list[0].find("COL2") > 0 :
				res["COL2"] = parsed_list[1]
			if parsed_list[0].find("COL3") > 0 :
				res["COL3"] = parsed_list[1]

	f.close()
	fw.close()


def main():
	parser = optparse.OptionParser('usage format_trans.py -f filename')
	parser.add_option('-f', dest='filename', type='string', help='input file')

	(options, args) = parser.parse_args()

	filename = options.filename

	if filename == None :
		print parser.usage
		exit(0)

	csvTrans(filename)

if __name__ == '__main__':
    main()

아래와 같이 실행하면 된다.

C:\Python27\apollo89_study>python format_trans.py -f sample.txt
sample.txt☆2013-04-17 11:42:32☆☆
sample.txt☆2013-04-17 11:42:34☆aaaa☆bbbb

결과 파일은 res_sample.txt 에 저장

 

This entry was posted in Python/Ruby/Perl and tagged . Bookmark the permalink.

댓글 남기기