don't stop believing

파일 읽어서 다시 쓰기 본문

Python/Basic

파일 읽어서 다시 쓰기

Tongchun 2018. 3. 5. 11:51

영어공부한다고 Dialouge를 Crawling해서 쌓아둔 파일이 2천개가 있습니다.

파일은 아래와 같이 영어와 한글 해석이 번갈아 가며 있습닏다.


(Stacey is talking to her father…)

(스테이시가 아버지와 얘기를 나눈다…) 

Stacey: Dad Mom said you and Uncle Jason are thinking about going into business together.

스테이시: 아빠 엄마가 그러시는데 아빠하고 제이슨 삼촌하고 동업할 생각이시라면서요.

Ed: That's the plan.

에드: 그럴 계획이지.

Stacey: Are you going to do it?

스테이시: 동업 하실 거예요?

Ed: Yes but we want to start slow.

에드: 그렇긴 한데 조심스럽게 시작하려고 한다.

Stacey: What business are you starting?

스테이시: 어떤 사업 시작하실 거예요?

Ed: A pizza restaurant. And it's across the street from a high school.

에드: 피자 가게야. 고등학교 길 건너편에 있는 가게.

Stacey: A high school? Wow! You'll really clean up!

스테이시: 고등학교요? 와! 아빠 돈을 정말 쓸어담겠어요!

Ed: We hope to.

에드: 그러면 좋겠구나.

Stacey: I'll chip in and work as a waitress or hostess.

스테이시: 저도 힘을 보태서 웨이트레스나 매니저 일을 할게요.

Ed: Thank you dear. We have waitresses but we need a hostess.

에드: 고맙다 얘야. 우린 웨이트레스는 있고 매니저 역할 할 사람은 필요하다.


이걸 python으로 영어와 한글 해석을 분리하고 싶었습니다.

그리고 2천개가 되는 파일을 모조리 다 처리해 주고 싶습니다.

그래서 아래와 같이 python 코드를 만들었습니다.

# -*- coding:utf-8 -*-
# Dialogue 파일을 읽어서 영어와 한글 설명을 분리합니다.

import os

# option이 each일 경우 개별 파일로 저장합니다.
# option이 all일 경우 하나의 파일에 저장합니다.
option = "all"

# 영어와 한글을 구분할 변수를 선언합니다.
korean = ""
english = ""

# 폴더안에 있는 파일을 모두 불러옵니다.
for file in os.listdir("./"):

	# 확장자가 txt인 것만 대상으로 합니다.
	if file.endswith(".txt"):

		# 파일 이름을 가져옵니다.
		fileName = os.path.splitext(os.path.basename(file))[0]
		
		# 파일명에 renew가 포함되어 있을 경우 삭제합니다.
		if "renew" in fileName:
			try:
				os.remove(file)
			except OSError:
				pass
		else:
			# 파일명에 renew가 포함되어 있지 않다면 파일을 읽어옵니다.
			# read = open(file, "rt")
			with open(file, 'r') as read:

				# 영어와 한글을 구분해 변수에 담습니다.
				for i, line in enumerate(read):
					if i % 2 == 0:
						english = english + line.rstrip().replace(": ", " : ") + "\n"
					else:
						korean = korean + line.rstrip().replace(": ", " : ") + "\n"

			# option이 each일 경우 각 파일에 renew를 붙여 추가합니다.
			if option == "each":
				writeFile = fileName + "_renew.txt"
				# 빈 파일을 새로 만듭니다.
				# 만약 파일이 있다면 모든 내용을 지우고 가장 처음 위치에서 시작합니다.
				with open(writeFile, 'w') as renew:
					renew.write(english + '\n\n')
					renew.write(korean + '\n\n')
			else:
				writeFile = "all_renew.txt"
				# 파일이 없다면 새로 만듭니다.
				# 만약 파일이 있다면 파일을 열고 가장 마지막 위치에서 시작합니다.
				with open(writeFile, 'a') as renew:
					renew.write(english + '\n\n')
					renew.write(korean + '\n\n')

			# 변수를 초기화 합니다.
			korean = ""
			english = ""

폴더안에 python 파일을 넣고 실행합니다.

영어와 한글 해석 구분을 파일 하나씩 만들어 놓을수도 있고 하나의 파일에 모두 담아 저장할 수도 있습니다.


그럼 아래처럼 영어와 한글해석이 분리된 파일이 생성됩니다.

(Stacey is talking to her father…)

Stacey : Dad Mom said you and Uncle Jason are thinking about going into business together.

Ed : That's the plan.

Stacey : Are you going to do it?

Ed : Yes but we want to start slow.

Stacey : What business are you starting?

Ed : A pizza restaurant. And it's across the street from a high school.

Stacey : A high school? Wow! You'll really clean up!

Ed : We hope to.

Stacey : I'll chip in and work as a waitress or hostess.

Ed : Thank you dear. We have waitresses but we need a hostess.



(스테이시가 아버지와 얘기를 나눈다…)

스테이시 : 아빠 엄마가 그러시는데 아빠하고 제이슨 삼촌하고 동업할 생각이시라면서요.

에드 : 그럴 계획이지.

스테이시 : 동업 하실 거예요?

에드 : 그렇긴 한데 조심스럽게 시작하려고 한다.

스테이시 : 어떤 사업 시작하실 거예요?

에드 : 피자 가게야. 고등학교 길 건너편에 있는 가게.

스테이시 : 고등학교요? 와! 아빠 돈을 정말 쓸어담겠어요!

에드 : 그러면 좋겠구나.

스테이시 : 저도 힘을 보태서 웨이트레스나 매니저 일을 할게요.

에드 : 고맙다 얘야. 우린 웨이트레스는 있고 매니저 역할 할 사람은 필요하다.


이걸 이용해 2천개의 파일을 하나의 파일에 정리해서 저장할 수 있습니다.


이상 기록을 위한 post였습니다.


'Python > Basic' 카테고리의 다른 글

f-string 문자열에 변수 넣기 (3.6)  (0) 2018.10.20
Python 3.x 설치 (on CentOS7)  (3) 2018.10.15
Windows에 Python 설치하기 2  (0) 2018.01.30
Windows에 Python 설치하기 1  (0) 2018.01.29
timestamp 출력 함수  (0) 2017.12.27
Comments