Python #30 l 파이썬 프로그래밍_탭을 4개의 공백으로 바꾸기

신승호·2021년 3월 30일
0

Python

목록 보기
31/35
post-custom-banner

List

  • 파이썬 프로그램
    • gugudan
    • 3과 5의배수 합하기
    • 게시판 페이징
    • 간단한 메모장 생성**
    • 탭을 4개의 공백으로 바꾸기
    • 하위 디렉터리 검색하기
    • 파이보
    • 코딩도장

파이썬 프로그래밍_탭을 4개의 공백으로 바꾸기


탭(tab)을 4개의 공백(space)으로 바꾸기

need to consider

  • 필요한 기능은?
    • 문서 파일 읽어 들이기
    • 문자열 변경하기
  • 입력 받는 값은?
    • 탭을 포함한 문서 파일
  • 출력하는 값은?
    • 탭이 공백으로 수정된 문서 파일

1. 스크립트를 출력하기 위한 모듈 작성

  • sys.argv[] 사용
    • sys.argv[0] = 파일의 이름
    • sys.argv[1] = 탭을 포한하는 원본파일 이름을 나타내게 할것
    • sys.argv[2] = 파일 안의 탭을 공백 4개로 변환한 결과를 저장할 파일 이름을 나타내게 할것
#tabto4.py
import sys

src = sys.argv[1]		# src는 탭을 포한하는 원본파일 이름
dst = sys.argv[2]		# 파일 안의 탭을 공백 4개로 변환한 결과를 저장할 파일 이름

print(src)
print(dst)

2. 명령어(메모) 실행

  • 명령어(메모) python tabto4.py a.txt b.txt
    • sys.argv[0] = tabto4.py
    • sys.argv[1] = a.txt
    • sys.argv[2] = b.txt
shinisgood@seunghoui-MacBookAir pythonprac % python tabto4.py a.txt b.txt
a.txt
b.txt

3. 테스트를 위해 원본파일(tab을 포함하는 파일)인 a.txt 만들어 보장

Life    is  too short
You need    python

4. tab을 공백 4개로 변환 시켜보자

# tabto4.py
import sys

src = sys.argv[1]
dst = sys.argv[2]

f = open(src,"r")		# src = sys.argv[1] = a.txt 결국 a.txt 가 열리는것
tab_content = f.read()
f.close()

space_content = tab_content.replace("\t", " "*4)	# replace 써서 탭(\t)을 공백 4개(" "*4)로 바꿔준 것(티는 별로 안날꺼당..)
print(space_content) 		# 프린트만 한거라 a.txt 내용을 바껴서 저장되지는 않음
Life    is    too    short
You    need    python

4. 바뀐내용 저장하는 하는 코드 추가하자

#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")		# dst = sys.argv[2] = b.txt / 먼저 b.txt를 "write" 모드로 열자
f.write(space_content)		# 수정한 space.content를 b.txt에 넣어두자
f.close()			# b.txt 닫자

Summary

결국 이건 파일 읽기 모드 사용해서 파일 열고 내용 바꾼다음 저장하는 것만 알면 됌 ㅋ

사용된 주요 코드

  • sys.argv[ ]
  • f = open("파일이름", "읽기모드")
  • 변수 = f.read()
  • f.write(변수)
  • f = close()
  • ~.replace()
  • tab = \t
  • 공백 4개 = " "* 4
profile
신승홉니다
post-custom-banner

0개의 댓글