ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python: with open() 파일 읽기(read), 쓰기(write), 덧붙히기(append), strip(), split() 함수란?
    Python 2020. 6. 30. 14:34

      파일을 읽고 쓰기전에 필수적으로 알아야 하는 함수가 있습니다.

    그래서 그 함수들부터 먼저 알아보도록 해보겠습니다. 

     

     

    1. strip()

     

      strip() 메서드는 앞뒤의 공백, 즉 앞뒤의 모든 화이트 스페이스들을 없애주는 기능을 합니다. 

    print("     \n   hello Panda \n \t ")
    print("     \n   hello Panda \n \t ")
    
    
    print("-----------------------------------------")
    
    
    print("     \n   strip hello Panda \n \t ".strip())
    print("     \n   strip hello Panda \n \t ".strip())
         
       hello Panda 
     	 
         
       hello Panda 
     	 
    -----------------------------------------
    strip hello Panda
    strip hello Panda

     

     

    2. split()

     

      split() 함수는 문자열을 어떤 한 기준으로 나누어 줍니다. 

    name_panda = "이름: 판다"
    name_data = name_panda.split(":")  # ":"를 기준
    print(name_data)
    
    
    name_panda = "이름: 판다"
    name_data = name_panda.split(": ")  # ": "를 기준
    print(name_data)

     

    ['이름', ' 판다']
    ['이름', '판다']

    strip으로 " 판다" 앞 공백을 없앨 수도 있지만

    더 쉬운 방법은 보기에서처럼 나누어줄 때 화이트 스페이스(" ")까지 이용하는 것입니다.

     

     

    3. 파일 읽기(read)

     

      파일을 읽기전에 미리 준비해둔 txt 파일을 프로젝트안에 넣어줍니다.

    Apple
    Banna
    Call
    Drive
    Egg

    <practice.txt>

     

     

    with open('practice.txt', 'r') as f:  # 'r'은 read의 약자
    
    # 만약 디렉토리 안에 파일을 만들고 싶다면 
    # with open('디렉토리 파일명/practice.txt', 'r') as f:
    
    
        print(type(f))
        for line in f:
    
           print(line.strip())
           # txt 파일안에 엔터(\n)가 있기 때문에 strip을 통해서 화이트 스페이스를 없애줍니다.
    

     

    Apple
    Banna
    Call
    Drive
    Egg

     

     

    4. 파일 쓰기(write)

     

    with open("data/new_file.txt", "w") as f:  # 'w'는 write의 약자
      # data 디렉토리안에 new_file.txt 파일을 생성합니다.
    
    
        f.write("hello world\n")  
        f.write("hello Panda\n")
      # 쓰고 싶은 내용 입력

     

    hello world
    hello Panda

    <new_file.txt>

     

     

    5. 파일 내용 추가하기(append)

     

    with open("data/new_file.txt", "a") as f:  # 'a'는 append의 약자
      # data 디렉토리안에 new_file.txt 파일에 내용을 추가합니다.
      # 만약 new_file.txt 파일이 없다면 파일을 생성하고 내용을 추가합니다.
    
    
        f.write("new hello world\n")  
        f.write("new hello Panda\n")
      # 쓰고 싶은 내용 입력

     

    hello world
    hello Panda
    new hello world
    new hello Panda

     

     

    <예제>

     

    영어 단어장을 만들고  랜덤하게 나오는 문제 만들기

     

    1) 파일 쓰기

    # 영어 단어장 딕셔너리 만들기
    
    voca = {}
    
    while True:
    
        word_english = input("영어 단어를 입력하세요 ")
        if word_english == 'q':
            break
    
    
        word_korean = input("한국어 뜻을 입력하세요 ")
        if word_korean == 'q':
            break
            
            
        voca[word_english] = word_english
    
    
    # 영어 단어장 딕셔너리로 영어 단어장 파일 만들기
    with open("data/vocabulary.txt", 'w') as f:
    
        for key, value in voca.items():
        
            f.write("{}: {}\n".format(key, value))
    
    
    
    
    

     

    영어 단어를 입력하세요 apple
    한국어 뜻을 입력하세요 사과
    영어 단어를 입력하세요 banna
    한국어 뜻을 입력하세요 바나나
    영어 단어를 입력하세요 panda
    한국어 뜻을 입력하세요 판다
    영어 단어를 입력하세요 secret
    한국어 뜻을 입력하세요 비밀
    영어 단어를 입력하세요 q
    
    Process finished with exit code 0
    

     

     

    2) 파일 읽기

    import random
    
    #  파일에서 데이터를 가져와 랜덤으로 문제 만들기 
    
    voca = {}
    data = 0  # 영어단어의 수
    
    with open("data/vocabulary.txt", 'r') as f:
    
        for line in f:
        
            word = line.strip().split(": ")
            # 앞뒤 화이트 스페이스를 제거한 후 ": "를 기준으로 나눈다.
            
            voca[word[0]] = word[1]
            
            # word[0] 에는 영어 단어 
            # word[1] 에는 한국어 뜻
            
            data += 1
    
    
    while True:
    
        answer_index = rand.randint(0, data - 1)  #랜덤한 인덱스를 만들어낸다.
        keys = list(voca.keys())
        my_word = input("{}: ".format(keys[answer_index]))
        
        if my_word == voca[keys[answer_index]]:
            print("맞았습니다!")
            
        elif my_word == "q":
            break
            
        else:
            print("틀렸습니다.")
    
    
    

     

    panda: 판다
    맞았습니다!
    banna: 바나나
    맞았습니다!
    panda: 사과
    틀렸습니다.
    banna: 는 맛있어
    틀렸습니다.
    secret: 비밀
    맞았습니다!
    banna: q
    
    Process finished with exit code 0
    반응형

    댓글

Designed by Tistory.