문제:
기존 파일에 있는 행의 reverse를 새로운 파일에 저장한다.
예시:
original.txt
abc
def
new.txt
cda
fed
문제 원인:
새로운 텍스트 파일을 작성하는데
# 예시
data = 'Hello World!\n'
newFile.write(data)
# 3번 반복하면 newFile의 내용이
# Hello World!
# Hello World!
# Hello World!
#
이런 식으로 반복문을 돌리니까, 줄바꿈 개행문자 (\n) 으로 인해서 마지막 행이 비어있는 행이 나왔다.
해결:
enumerate를 이용해서 마지막 행일 때는 개행문자 안쓰기
original = open("original.txt", "r")
# 새로운 파일을 생성한다.
newFile = open("new.txt", 'w')
# 기존 파일의 길이를 구한다.
f = original.readlines()
fileLen = len(f)
for i, line in enumerate(f):
line = line.rstrip('\n')
if i == fileLen - 1:
data = '{0}'.format(line[::-1])
else:
data = '{0}\n'.format(line[::-1])
newFile.write(data)
기존 파일행의 reverse를 새로운 파일에 저장하기 위해서,
open()으로 새 텍스트 파일(new.txt)을 생성하고, 기존 파일과 새 파일의 길이가 다르지 않기 때문에
기존 파일의 길이를 구해놓는다. → 몇 번째 행이 마지막 행인지 알 수 있도록.
readlines()는 텍스트 파일 각각의 행을 리스트에 저장한다.
f는 리스트이기 때문에 리스트를 인자로 받는 enumerate에 사용할 수 있다.
기존 파일의 내용을 반복하면서, 마지막 행이 되었을 때 (if i == fileLen - 1) 개행문자를 넣지 않는다.
더 나은 방법:
original = open("original.txt", "r")
# 새로운 파일을 생성한다.
newFile = open("new.txt", 'w')
for line in original:
line = line.rstrip('\n')
print(line + line[::-1], file=newFile)
newFile.close()
print()에 file parameter를 사용하면 개행문자를 쓸 필요없이 자동으로 줄바꿈이 된다.
'Computer Science > [20-3,4] Python Basic' 카테고리의 다른 글
[Python] try~ except~ 문을 이용한 예외 처리 (0) | 2020.03.12 |
---|---|
[Python] 텍스트 파일 관련 자주 사용하는 명령어 정리 (0) | 2020.03.11 |
[Python] 딕셔너리 키와 값을 서로 바꾸기 - 값이 군집자료형 (0) | 2020.03.08 |
[Python] 문자열에서 알파벳만 추출하기 (0) | 2020.03.06 |
[Python] text file에서 알파벳이 있는 위치 찾기 (0) | 2020.03.05 |
댓글