이번에는 문서 파일을 읽어서 그 문서 파일 안에 있는 탭 문자(Tab)를 공백 문자(Space) 4개로 바꾸어 주는 스크립트를 작성해 보자.
- 필요한 기능은? 문서 파일 읽어 들이기, 문자열 변경하기
- 입력받는 값은? 탭을 포함한 문서 파일
- 출력하는 값은? 탭이 공백으로 수정된 문서 파일
다음과 같은 형식으로 프로그램이 수행되도록 만들 것이다.
python tabto4.py src dst
tabto4.py는 우리가 작성해야 할 파이썬 프로그램 이름, src는 탭을 포함하고 있는 원본 파일 이름, dst는 파일 안의 탭을 공백 4개로 변환한 결과를 저장할 파일 이름이다.
예를 들어 a.txt에 있는 탭을 4개의 공백으로 바꾸어 b.txt에 저장하고 싶다면 다음과 같이 수행해야 한다.
python tabto4.py a.txt b.txt
1. 먼저 다음과 같이 tabto4.py 파일을 작성해 보자.
tabto4.py는
C:\doit디렉터리에 저장한다.
# c:/doit/tabto4.py
import sys
src = sys.argv[1]
dst = sys.argv[2]
print(src)
print(dst)
sys.argv를 사용하여 입력값을 확인하도록 만든 코드이다.
2. 다음과 같이 수행했을 때 입력값이 정상적으로 출력되는지 확인해 보자.
C:\doit>python tabto4.py a.txt b.txt
a.txt
b.txt
입력으로 전달한 a.txt와 b.txt가 정상적으로 출력되는 것을 확인할 수 있다.
3. 테스트를 위한 원본 파일(탭을 포함하는 파일)인 a.txt를 다음과 같이 작성한다. 각 단어는 탭(\t) 문자로 분리되도록 입력해야 한다.
Life is too short
You need python
4. 이제 탭 문자를 포함한 a.txt를 읽어 탭을 공백 4개로 변환할 수 있도록 코드를 수정해 보자.
# c:/doit/tabto4.py
import sys
src = sys.argv[1]
dst = sys.argv[2]
f = open(src)
tab_content = f.read()
f.close()
space_content = tab_content.replace("\t", " "*4)
print(space_content)
src에 해당되는 입력 파일을 읽어서 그 내용을 tab_content라는 변수에 저장한 후 문자열의 replace 함수를 사용해 탭(\t)을 4개의 공백으로 변경하도록 코드를 수정했다.
5. 이제 다음과 같은 명령을 수행해 보자.
C:\doit>python tabto4.py a.txt b.txt
Life is too short
You need python
탭 문자가 공백 4개로 변경되어 출력될 것이다. 하지만 탭과 공백의 차이점을 눈으로 알 수는 없으므로 탭이 정상적으로 공백으로 변경되었는지 확인하기 어렵다.
6. 이제 변경된 내용을 b.txt에 저장할 수 있도록 다음과 같이 프로그램을 변경해 보자.
# c:/doit/tabto4.py
import sys
src = sys.argv[1]
dst = sys.argv[2]
f = open(src)
tab_content = f.read()
f.close()
space_content = tab_content.replace("\t", " "*4)
f = open(dst, 'w')
f.write(space_content)
f.close()
탭이 공백으로 변경된 space_content를 출력 파일인 dst에 쓰도록 코드를 수정했다.
7. 다음 명령을 수행해 프로그램을 실행하자.
C:\doit>python tabto4.py a.txt b.txt
b.txt가 C:\doit 디렉터리에 생성된다. 에디터로 b.txt를 열어 탭이 4개의 공백 문자로 변경되었는지 확인해 보자. 프로그램을 작성할 때 사용하는 에디터는 대부분 탭과 공백 문자를 다르게 표시하므로 눈으로 확인할 수 있다.