본문 바로가기
초보자를 위한 Python/6. Python 파일처리

6.3 파이썬 파일복사 방법 : shutil.copy(), shutil.copystat()

by 엔터티 2022. 11. 11.
반응형

파이썬에서 파일복사

운영 체제 셸 유틸리티를 사용하여 파일을 쉽게 복사할 수 있는 내장 기능을 제공합니다.

다음 명령은 파일 복사에 사용됩니다.

shutil.copy(src,dst)

다음 명령은 메타데이터 정보가 있는 파일을 복사하는 데 사용됩니다.

shutil.copystat(src,dst)

목차

     

    파이썬에서 파일을 복사하는 방법

    다음은 shutil copy() 메서드를 사용하여 파이썬에서 파일을 복사하는 단계입니다.

    Step1: 현재 디렉토리에서 원본 경로 캡처

    파일을 복사하기 전에 현재 디렉토리에서 원본 파일의 경로를 가져와야 합니다

    1. 변수 선언 : .txt 파일이 있는 경우 "src" 변수에 파일 경로를 저장합니다.
    2. 변수에 분할 기능 적용 : 코드에서 "src" 변수를 사용하여 경로+파일 이름을 분할하고 결과를 출력으로 출력합니다.

    파일경로 확인

    코드설명

    • 먼저 "Entity01.txt" 파일이 있는지 확인합니다. 이전에 Entity01.txt 파일을 만들었기 때문에 파일이 존재한다는 것을 알고 있으며 코드를 계속 사용합니다.
    • 파일이 있는 경우 " src " 변수에 파일 경로를 저장 합니다.
    • 경로를 얻으면 경로와 파일 이름을 분리합니다.
    • path.split이를 위해 소스 변수에 split 함수를 사용할 것입니다.
    • 코드 실행시 " 파일명 "과 " 파일경로 "를 따로 출력

    Step2 : shutil 모듈

    기존 파일의 복사본 만들기 Shutil 모듈을 사용하여 기존 파일의 복사본을 만듭니다. 여기에서 기존 파일 "Entity01.txt"의 복사본을 만들었습니다.

    복사본 생성

    코드설명

    • 원래 파일 이름 "Entity01.txt"의 끝에 문자 .bak를 추가하여  확장자가 .bak인 "Entity01.txt.bak"  복사본을 생성합니다.
    • 그런 다음 유틸리티의 복사 기능을 사용하여 소스에서 대상으로 복사합니다.
    • 코드를 실행하면 패널 오른쪽에 확장자가 .bak인 중복 파일이 생성되는 것을 볼 수 있습니다.

    Step3 : 파일의 메타 데이터, 권한 및 기타정보

    copy 함수는 파일의 내용만 복사하고 다른 정보는 복사하지 않습니다.

    파일과 관련된 메타 데이터 , 파일 권한 및 기타 정보 를 복사하려면 " copystat " 기능을 사용해야 합니다.

    이 코드를 실행하기 전에 "Entity01.text.bak" 복사 파일을 삭제해야 합니다.

    파일정보까지 복사

    파일을 삭제하고 프로그램을 실행하면 .txt 파일의 복사본이 생성되지만 이번에는 파일 권한, 수정 시간 및 메타데이터 정보와 같은 모든 정보가 포함 됩니다. OS 셸로 이동하여 정보를 확인할 수 있습니다.

    import os
    import shutil
    from os import path
    
    def main():
        # 기존 파일 복제
        if path.exists("Entity01.txt"):
        # 같은 디렉토리에 있는 파일의 경로
            src = path.realpath("Entity01.txt");
    
    
        #필터로 경로 분리
        head, tail = path.split(src)
        print("paht : "+ head)
        print("fite : "+ tail)
    
        # "bak"를 붙여서 백업 복사본을 만들어 봅시다.
        dst = src + ".bak"
        # 쉘을 사용하여 파일 사본을 만듭니다.
        shutil.copy(src, dst)
    
        # 권한 복사, 수정
        shutil.copystat(src, dst)
    
    
    if __name__ == "__main__":
        main()

    Step4 : 정보 가져오기

    마지막으로 수정한 텍스트 파일에 대한 정보를 가져올 수 있습니다.

    파일정보 가져오기

    • Code Line#15- .txt 파일(Entity01)이 마지막으로 수정된 날짜, 날짜, 월, 연도 및 시간을 알려줍니다.
      경로 모듈을 사용하여 파일 수정 시간 세부 정보를 가져온 다음 time class c time 함수 를 사용하여 읽을 수 있는 시간으로 변환합니다.
      따라서 코드를 실행하면 Entity01.txt 파일이 2022년 11월 10일 목요일 17:28 (Thu Nov 10 17:28:02 2022)에 마지막으로 수정되었음을 알 수 있습니다.
    • 코드 줄#17- 파일 수정에 대한 정보를 제공하는 것과 동일한 작업을 수행하지만 이를 나타내는 형식이 다릅니다.
      여기서 수정 시간 가져오기 함수 (path.getmtime(“Entity01.txt”))을 사용합니다. 이제 c time 함수를 사용하는 대신 From Time Stamp 함수 를 사용 하고 날짜 시간 객체를 구성할 것입니다. 출력에서 파일 수정 시간 세부 정보가 다른 형식으로 인쇄된 것을 볼 수 있습니다 . 2022-11-10 17:28:02.018214
    #
    # os 경로 모듈 작업을 위한 예제 파일
    
    
    import os
    from os import path
    import datetime
    from datetime import date, time, timedelta
    import time
    
    def main():
    
    
        # 수정 시간 가져오기
        t = time.ctime(path.getmtime("Entity01.txt.bak"))
        print(t)
        print(datetime.datetime.fromtimestamp(path.getmtime("Entity01.txt.bak")))
    
    
    if __name__ == "__main__":
        main()

     

    요약 : 

    • 기존 파일의 복사본을 만들려면 shutil.copy(src,dst)
    • 파일 권한, 수정 시간 또는 메타 데이터 정보 와 같은 원본 파일의 모든 정보를 코드를 사용하여 복제 파일에 복사하려면 shutil.copystat(src,dst)

    파이썬의 파일복사

    반응형

    댓글