728x90
반응형
45가지 파이썬 예제의 마지막 프로젝트는 사람의 이름과 전화번호를 저장한 json 파일을 다뤄본다

다뤄볼 json 파일은 위와 같다
각 인원별로 ID를 부여받아 Key로 사용하고, 이름과 번호가 연결된 딕셔너리를 Value로 사용한다
1) 전화번호 출력
def list_phonebook():
f = open('Target.json', 'r')
d = json.load(f)
for pid in d:
print('\nPID:', int(pid) + 1)
for p_info in d[pid]:
print(p_info + ':', d[pid][p_info])
f.close()
함수 list_phonebook에서는 json 파일을 읽기 모드로 가져와 출력한다
ID를 우선 출력하고 ID 별 번호와 이름이 연결된 딕셔너리를 출력한다
2) 새로운 멤버 추가
def add_member():
print("\nEnter the information of the member")
name = input('Name: ')
phone = input('Phone: ')
name_check = False
f = open('Target.json', 'r')
d = json.load(f)
f.close()
for pid in d:
if name == d[pid].get('Name'):
name_check = True
if name_check is True:
print('\n# The member is already in the phone book')
else:
with open('Target.json', 'w') as f:
d[len(d)] = {'Name': name, 'Phone': phone}
json_obj = json.dumps(d, indent=4)
f.write(json_obj)
print('\n# The phone number has been written to the phone book')
return d
함수 add_member를 사용하여 새로운 멤버를 json 파일에 추가한다
사용자로부터 이름과 전화번호를 입력받아 추가하는데,
이미 이름이 json 파일에 존재하면 추가할 수 없도록 막게 된다
그렇지 않다면 입력한 값을 받아 딕셔너리에 저장하여 json 모듈의 dumps 함수를 사용해 json 형식으로 작성한다
작성한 파일을 write 함수를 사용하여 실제 json 파일에 작성한다
3) 기존의 멤버 삭제
def delete_member():
print("\nEnter the name")
name = input('name: ')
f = open('Target.json', 'r')
d = json.load(f)
f.close()
for pid in d:
if name == d[pid].get('Name'):
with open('Target.json', 'w') as f:
del d[pid]
json_obj = json.dumps(d, indent=4)
f.write(json_obj)
print('\n# The member has been deleted')
return d
print('\n# The member is not in the phone book')
delete_member 함수를 통해 json 파일에 존재하던 기존의 멤버를 삭제한다
add_member 함수와 비슷하게 동작하지만, 이름만을 입력받아 동작하며
json 파일을 딕셔너리 형태로 불러와서 입력받은 이름의 데이터를 삭제하고
불러온 딕셔너리를 dumps 함수를 통해 json 형식으로 만든다
이후 write 함수를 통해 해당 딕셔너리를 json 파일에 적용한다
4) 메인 메뉴
def mainmenu():
while True:
menu = input("""
----MAIN MENU----
1: List phonebook
2: Add a new member
3: Delete a member
4: Program exit
Please enter your choice: """)
if menu == '1':
list_phonebook()
elif menu == '2':
add_member()
elif menu == '3':
delete_member()
elif menu == '4':
print('# Exit!')
return False # break
else:
print('\n Menu cannot be found')
mainmenu()
mainmenu 메서드는 위의 모든 기능을 하나로 뭉쳐서 사용한다
입력받은 정수값에 따라 각각의 동작을 수행한다
최종 실행 결과는 다음과 같다




728x90
반응형
'Python > 45가지 파이썬 기초문법 예제' 카테고리의 다른 글
| 파이썬 (44) 파일 읽기 & 쓰기 고급 (0) | 2025.06.09 |
|---|---|
| 파이썬 (43) 폴더 재귀 조회 (0) | 2025.06.08 |
| 파이썬 (42) 파일 확장자 체크 (0) | 2025.06.04 |
| 파이썬 (41) 텍스트 파일 필터링 (0) | 2025.06.02 |
| 파이썬 (40) 비밀번호 체크 (0) | 2025.05.31 |