간단한 메모장 만들기
기능 : 메모 추가하기, 메모 조회하기
입력받는 값 : 메모 내용, 프로그램 실행 옵션
출력하는 값 : memo.txt 처럼 txt파일 생성
python memo.py -a "Life is too short"
import sys
if sys.argv[1] == "-a":
with open("memo.txt", "a") as f:
f.write(sys.argv[2] + "\n")
elif sys.argv[1] == "-v":
with open("memo.txt", "r") as f:
print(f.read())
출력화면

커맨드라인에서의 입력된 값을 활용해야되므로 sys 모듈을 사용했음
모드가 -a이면 파일을 a(추가) 모드로 켜서 argv[2] 내용을 파일에 추가한다
모드가 -v라면 파일을 읽기 r(읽기) 모드로 켜서 파일에 저장된 내용을 출력한다
모범답안과 동일하므로 모범답안은 따로 짚고 넘어가지 않음.
탭을 4개의 공백으로 바꾸기
필요한 기능 : 문서 파일 읽어 들이기, 문자열 변경하기
입력받는 값 : 탭을 포함한 문서 파일
출력하는 값 : 탭이 공백으로 수정된 파일
형식 : python tabto4.py src dst 형식으로 사용 (tabto4.py 파일이름, src 원본 파일, dst 수정 파일)
import sys
src = sys.argv[1]
dst = sys.argv[2]
with open(src) as f:
rm_tamp = f.read()
space_content = rm_tamp.replace("\t", " "*4)
print(space_content)
with open(dst, 'w') as f:
f.write(space_content)
src를 열어 파일의 내용을 읽어와 rm_tamp에 저장한 후 space_content에 tab을 공백4개로 변환한 내용을 저장하고 dst파일을 열어 그 내용을 저장하는 방식으로 파일을 작성했음
모범답안과 거의 동일한 코드이므로 따로 짚지않고 넘어감
하위 디렉토리 검색하기
①. sub_dir_search.py 초안 작성하기
def search(dirname):
print(dirname)
serach("C:/")
②. 디렉토리에 있는 파일을 검색할 수 있도록 코드를 수정
import os
def search(dirname):
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
print(full_filename)
if os.path.isdir(full_filename):
search(full_filename)
search("C:\\~~~작업중인 레포지토리~")
출력화면

③. 확장자가 .py인 파일만 출력하도록 하기
import os
def search(dirname):
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
print(full_filename)
ext = os.path.splitext(full_filename)[-1]
if ext == '.py':
print(full_filename)
search("C:\\Users\\PCD-178\\Desktop\\study")
④. 하위 디렉토리속 파일들까지 탐색하도록 코드를 수정
import os
def search(dirname):
try:
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
if os.path.isdir(full_filename):
search(full_filename)
else:
ext = os.path.splitext(full_filename)[-1]
if ext == '.py':
print(full_filename)
except PermissionError:
pass
search("C:\\Users\\PCD-178\\Desktop\\study")
search("C:\\Users\\PCD-178\\Desktop\\study")
함수속 코드들을 try.. exception.. 문으로 깜싼 이유는 권한이 없는 디렉토리에 접근하더라고 오류가 발생하지 않도록 하기위해서임
full_filename이 디렉토리인지 파일인지 구별하기위해서 os.path.isdir함수를 사용했음 디렉토리인 경우에는 search함수를 재귀 호출해 하위 디렉토리를 다시 호출하게 했고, 파일이면 .py인경우만 출력하도록 했음