본문 바로가기

웹_프론트_백엔드/Python

2020.02.03

1. lex04_phonebookmenu.py

# -*- coding: utf-8 -*-
#phonebook menu :phonebook 리스트 관리 :
#C Create R read(print) U Update D Delete
# 초기화 
#1.출력
#2.추가
#3.수정
#4.삭제 
#9.프로그램 종료 
phone_list= \
[ 
    ['leemin', '010-028-9382'],
    ['shin', '017-821-6521'],
    ['parkchanho', '010-111-1111'],
    ['Kim mon', '02-982-1391'],
    ['itKorea', '010-9903-1129']
] 

class Phonebook() :
    count =0
    def __init__(self, name, phone_number) : #특수메서드: 파이썬이 호출. 
        self.id= Phonebook.count;
        self.name = name;
        self.phone_number = phone_number
        Phonebook.count+=1
    def print(self) :
        return '{0:3} {1:10}  {2:15}  '.format(self.id, self.name, self.phone_number)
    #특수한 메서드 :print할때 호출 : print가 호출되었을 때 출력하고자 하는 스트링을 return. 
    def __str__(self) :
        return '{0:3} {1:10}  {2:15}  '.format(self.id, self.name, self.phone_number)
           
#초기화 phonebook_list에 기본데이터를 입력
phonebook_list=[]
for phone in phone_list:
    #print(phone)
    #print(phone[0],phone[1])
    # 인스턴스 생성 
    pb = Phonebook(phone[0], phone[1])
    #리스트에 추가 
    phonebook_list.append(pb)

def print_phonebook() :
    for phonebook in phonebook_list : 
        print(phonebook.print())

def add_phonebook() :
    #사용자로부터 이름과 전화번호를 입력받는다
    name = input('이름을 입력하세요  ')
    phone_number = input('전화번호를 입력하세요  ')
    #이름과 전화번호를 이용하여 객체를 만든다.
    phonebook = Phonebook(name, phone_number)
    #phonebook_list 리스트에 추가한다. 
    phonebook_list.append(phonebook)
    

#update는 너무 어려워서 안하기로 함
def update_phonebook() :
    pass


def delete_phonebook():
    #사용자로부터 id를 입력받는다. 
    id_num = input("지우고자 하는 폰북아이디번호를 입력하세요  ") # str type
    id_num = int(id_num) #str->int 으로 강제형변환 
    flag = False; #if문에 들어갔을 때 flag를 변경
    for phonebook in phonebook_list :
        print(phonebook)
        if id_num == phonebook.id  : 
            phonebook_list.remove(phonebook)
            print('요청하신 번호를 삭제하였습니다')
            flag= True
            break
    if not flag : 
        print('요청하신 번호는 존재하지 않습니다')       
    
    #id와 동일한 id를 갖는 객체를 phonebook_list에서 찾는다. 
    #리스트에서 삭제한다. remove()를 사용
    

while True: 
    print('1:출력 2:추가 3:수정 4:삭제 9: 종료')
    #input을 받는다.  menu로 받습니다. 
    menu=int(input('메뉴를 입력하세요 > '))
    #input이 9면 break
    if menu == 9 : 
        break
    if menu == 1:
        print_phonebook()
    elif menu == 2:
        add_phonebook()
    elif menu == 3 :
        update_phonebook()
    elif menu == 4 :
        delete_phonebook()
print('프로그램을 종료합니다')

2. lec01_path.py

# -*- coding: utf-8 -*-
# path란  directory, file 모두를 얘기함. 

import os

#__file__ (시스템 글로벌 변수 ) : 현재파일의 절대 경로 얻기 (f5로 실행)
print(__file__)

#__file__에서 절대경로만 가져오기 
print(os.path.dirname(__file__))

#상대경로에서 절대경로를 가져오기
print(os.path.abspath('.'))

###### firstfile.txt를 만들기 
#1. path만들기 
file_path = os.path.join(os.path.dirname(__file__), 'firstfile.txt')
print(file_path)
#2.path를 이용하여 file생성(쓰는 용도로 )
#변수에 파일객체 생성하여 담는다. 
#'wt' :mode : write, text
f = open (file_path, 'wt') 
print('처음만든 파일입니다.', file=f)
#3.파일을 닫는다. 
f.close()

#4. 파일을 연다 (읽는 용도로)
#'rt' :mode : read, text
f=open(file_path, 'rt')
text= f.read()
print(text)
#5. 파일을 닫는다. 
f.close() 

3. lec02_file.py

# -*- coding: utf-8 -*-
#파일 입출력
#형식 : 변수 = open(파일이름, 모드, 문자저장방식)
#파일이름 :파일 path의 string. 
#모드: 
#w:write
#r:read
#a:append (파일의 끝에 추가)

#t:text
#b:binary

#문자저장방식 :utf-8이 디폴트 

#파일읽기 메서드 : read(), readline(), readlines()
#파일쓰기 메서드 : write(),            writelines()

text= '''
누구를 위해 누군가 기도하고 있나 봐
숨죽여 쓴 사랑시가 낮게 들리는 듯해
너에게로 선명히 날아가
늦지 않게 자리에 닿기를
I'll be there 홀로 걷는 너의 뒤에
Singing till the end 그치지 않을 이 노래
아주 잠시만 귀 기울여 봐
유난히 긴 밤을 걷는 널 위해 부를게
또 한 번 너의 세상에 별이 지고 있나 봐
숨죽여 삼킨 눈물이 여기 흐르는 듯해
할 말을 잃어 고요한 마음에
기억처럼 들려오는 목소리
I'll be there 홀로 걷는 너의 뒤에
Singing till the end 그치지 않을 이 노래
아주 커다란 숨을 쉬어…
'''

import os
#print(text)
#base_dir를 설정
base_dir = os.path.dirname(os.path.abspath(__file__))
print(base_dir)
file_path = os.path.join(base_dir, 'data_synopsis.txt')
file_copy_path = os.path.join(base_dir, 'data_synopsis_copy.txt')

##########1
#파일쓰기 :write()
f=open(file_path, 'wt', encoding='utf-8')
f.write(text)
f.close()
#파일읽기 :read()
f= open(file_path, 'rt', encoding='utf-8')
text2 = f.read()
f.close()
#print(text2)

##########2 리스트로 하는 방법
#파일읽기 : readlines()
f=open(file_path, 'rt', encoding='utf-8')
lines = f.readlines()
f.close()

#파일쓰기 :writelines()
f= open(file_copy_path, 'wt', encoding='utf-8')
f.writelines(lines)
f.close()

#lines를 화면에 출력하기 
for line in lines : 
    print(line,end='')

'웹_프론트_백엔드 > Python' 카테고리의 다른 글

2020.02.04  (0) 2020.02.05
2020.01.31  (0) 2020.02.03
2020.01.30  (0) 2020.01.30
2020.01.29  (0) 2020.01.29
2020.01.28  (0) 2020.01.28