ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 89 - (파이썬) 모듈 문제
    study with Q - 파이썬 2024. 9. 19. 18:27

    1. 다음 중 math 모듈의 함수를 제대로 읽어 들이지 못하는 코드를 고르시오.

    ① import math

    ② import sin, cos, tan from math

    ③ import math as m

    ④ from math import *

    더보기
    import sin, cos, tan from math
    >>>
    File "/home/runner/number2/main.py", line 1
        import sin, cos, tan from math
                             ^^^^
    SyntaxError: invalid syntax

    2. 파이썬 문서를 보면서 모듈의 이름을 다섯 개 적고, 해당 모듈에 어떤 기능이 있는지 간단하게 적어보시오.

    더보기
    번호 모듈 이름 모듈 기능
    0 wave 모듈 wav 음악 형식과 관련된 처리를 할 때 사용합니다.
    1 zipfile 모듈 이 모듈은 ZIP 파일을 만들고, 읽고, 쓰고, 추가하고, 나열하는 도구를 제공합니다.
    2 pickle 모듈 pickle 모듈은 파이썬 객체 구조의 직렬화와 역 직렬화를 위한 바이너리 프로토콜을 구현합니다. “피클링(pickling)”은 파이썬 객체 계층 구조가 바이트 스트림으로 변환되는 절차입니다.
    3 email 모듈 이메일 메시지를 관리하기 위한 라이브러리입니다.
    4 cmath 모듈 이 모듈은 복소수에 대한 수학 함수에 대한 액세스를 제공합니다.

    3. os 모듈의 oslistdir() 함수와 os.path.isdir()함수를 사용하면 특정 디렉터리를 읽어 파일인지 디렉터리인지를 확인할 수 있습니다. 직접 코드를 작성하고 실행해보시오. (실행하는 위치에 따라서 출력 결과가 달라집니다.)

     

    3-1. 현재 디렉터리를 읽어 들이고 파일인지 디렉터리인지 구분하기

    #os 모듈을 읽어 들이고
    
    import os 
    
    #현재 폴더와 파일/폴더를 출력합니다.
    
    #현재 디렉터리의 내용을 읽고
    output = os.listdir(".") 
    #print 함수에 앞쪽에 os 디렉터라는 실행결과를 보여줄 수 있도록 문자열과 output을 넣어요.
    print("os.listdir():", output) 
    print()
    >>>
    os.listdir(): ['.cache', '.upm', 'poetry.lock', 'pyproject.toml', '.replit', '.pythonlibs', '.local', 'main.py']

     

    더보기

    요기까지하고 코드를 실행하면 코드가 들어있는 디렉터리에 있는 모든 파일들을 읽어서 리스트 형식으로 출력해주는 것을 확인할 수 있다.

    + for 반복문으로 반복을 돌려 파일/폴더를 구분하는 코드까지 추가하면

    ##os 모듈을 읽어 들이고
    
    import os 
    
    output = os.listdir(".") 
    print("os.listdir():", output) 
    print()
    
    ## 현재 폴더의 파일/폴더를 구분합니다.
    
    print("#폴더와 파일 구분")
    for path in output:
      #만약 os.path에서 path가 디렉토리로 확인이 된다면 폴더라고 출력
      if os.path.isdir(path):
        print("폴더:", path)
      # 아니라면 파일리라고 출력
      else:
        print("파일:", path)
    >>>
    #폴더와 파일 구분
    폴더: .cache
    폴더: .upm
    파일: poetry.lock
    파일: pyproject.toml
    파일: .replit
    폴더: .pythonlibs
    폴더: .local
    파일: main.py

     

    → 위와 같은 코드로 디렉터리 내부에 있는 요소를 읽을 수 있고 os.listdir로 해당 데이터가 폴더인지 파일인지 알 수 있군요!

    그렇다면 이제 진짜 할 일을 하자

     

    3-2.  위의 코드를 활용해서 '폴더라면 또 탐색하기'라는 재귀 구성으로 현재 폴더 내부에 있는 모든 파일을 탐색하도록 코드를 작성해보자.

     

    ##os 모듈을 읽어 들이고
    import os 
    
    ##폴더를 읽어 들이자.
    def read_folder(path): #!read_folder라는 함수, 근데 path라는 경로를 곁들인..
      #폴더에 요소 읽어 들이기
      output = os.listdir(path) #!os.listdir를 이용해 path에 있는 모든 요소를 읽어 드린다
      #폴더의 요소 구분하기
      for item in output: #!반복을 돌고, 폴더에 요소를 구분하고
        if os.path.isdir(item):  #!아이템이 폴더인지 확인을 하고 리드 디렉토리를 다시 실행
          read_folder(path + "/" + item)
        #폴더라면 계속 읽어 들이기
        else :
          #파일이라면 출력하기
          print("파일:", item)
    
    #현재 폴더의 파일/ 폴더를 출력
    read_folder(".")
    >>>
    파일: replit
    파일: nix
    파일: pypoetry
    파일: store.json
    파일: poetry.lock
    파일: pyproject.toml
    파일: .replit
    파일: bin
    파일: lib
    파일: share
    파일: main.py

     


     

    그니께 결국...

    ※ 다른 모듈을 공부하다보면 이거 만능아녀 생각이 들지만 > 아녀. 라는 것을 알아주십쇼

    ※ 인터넷이나 챗GPT에게 코드를 묻고 복분해도 알고리즘을 잘 이해하고 있어야 뭐하는 코디인지 이해할 수 있고, 내가 원하는 코드에 적합한 설계로 변경해서 끼워넣을 수 있다는 것도 알아쥬십쇼.

     

Designed by Tistory.