본문 바로가기
강의/점프투파이썬

[점프투파이썬] 3. 간단한 메모장 만들기(sys.argv)

by 소꿍 2020. 3. 17.

3. 원하는 메모를 파일에 저장하고 추가 및 조회가 가능한 간단한 메모장을 만들어 보자.

 

입력: 메모할 내용

기능: 입력한 내용 저장/추가하기, 저장된 내용 조회하기

 

1) 저장할 파일은 "memo.txt", 입력값은 m으로 지정

먼저 "memo.txt" 파일을 디렉토리에 만들고, m을 memo.txt에 작성하도록 한다.

m = input("내용을 입력하세요: ")
f = open("C:/doit/memo.txt", 'w')

 

2) 저장할 내용은 입력값(메모할 내용)

입력값을 memo.txt에 작성하고 닫아준다.

f.write(m + "\n")
f.close()

3) 조회: 파일을 읽기 모드로 열어 저장된 내용을 조회한다.

f = open("C:/doit/memo.txt", 'r')
save = f.read()
print(save)
f.close()

4) 메모를 추가한 후 조회한다.

f = open("C:/doit/memo.txt", 'a')
f.write(input("내용을 입력하세요: ") + "\n")
f = open("C:/doit/memo.txt", 'r')
save = f.read()
print(save)
f.close()

*만들고 난 후 문제점: 1. 입력 후 조회 -> 2. 추가 입력 후 조회까지만 됨..

근데 어떻게 고치는지 모르겠다..


- 해설

 

1) 다음 명령을 실행했을 때 메모를 추가할 수 있도록 만든다.

python memo.py -a "Life is too short"

 

이를 위해 입력으로 받은 옵션메모를 출력하는 코드를 작성한다.("memo.py")

# C:/doit/memo.py
import sys

option = sys.argv[1]
memo = sys.argv[2]

print(option)
print(memo)

sys.argv프로그램을 실행할 때 입력된 값을 읽어 들일 수 있는 파이썬 라이브러리

sys.argv[0]는 입력받은 값 중에서 파이썬 프로그램 이름인 "memo.py",

sys.argv[1]은 프로그램 실행 옵션 값, sys.argv[2]는 메모 내용

 

* 그림 떠올리기

점프투파이썬 04-3 [sys 모듈로 매개변수 주기]

2) 입력으로 받은 메모를 파일에 쓰도록 "memo.py"의 코드를 변경한다.

# c:/doit/memo.py
import sys

option = sys.argv[1]

if option == '-a':
    memo = sys.argv[2]
    f = open('memo.txt', 'a')
    f.write(memo)
    f.write('\n')
    f.close()

 

3) 메모를 조회할 때는 type 이용

C:\doit>type memo.txt

*type은 

 

4) 이번에는 작성한 메모를 출력하는 부분을 만든다. 메모 출력은 다음과 같이 동작하도록 만든다.

python memo.py -v

 

"memo.py"에 메모를 출력할 수 있는 코드를 추가한다.

if option == '-v':
    f = open('memo.txt', 'r')
    save = f.read()
    print(save)
    f.close()

*이건 앞에서 본 해설을 바탕으로 혼자 작성한 코드

 

그런데 해설과 또 다른 점은

elif option == '-v':
    f = open('memo.txt')
    memo = f.read()
    f.close()
    print(memo)

   a) 여러 가지 조건을 판단하는 elif를 사용함 : 요 부분만 고치면 해결

   b) 파일을 그냥 열어줌('r'을 쓰지 않으면 자동으로 읽기 모드로 열린다. 그래서 결과는 같음!) - 근데 까먹고 있었음ㅋㅋ

   c) 파일을 먼저 닫은 후에 print함(이건 닫고 프린트하나 프린트하고 닫으나 똑같다고 함)

 

 

이렇게 되면 "python memo.py -a" 로 메모를 추가하고

"python memo.py -v"로 메모를 읽을 수 있다.

 

 

외장함수 부분을 할 때 잘 이해되지 않았던 부분인데, 이걸 하고 나니 조금 이해된 것 같다!!

댓글