shutil : 고수준 파일 연산

markyang92·2022년 3월 21일
0

python

목록 보기
37/42
post-thumbnail

shutil

  • shutil: 고수준 파일 연산
  • copyfile, copy, copy2 함수는 기본적인 사용법은 아래와 같다.
    • copyfile, copy: 메타 정보는 복사되지 않는다.
      • 즉, 작성한 날짜=복사한 날짜로 변경된다.
    • copy2: 메타정보도 복사
      • 즉, 파일 작성한 날짜등 정보도 복사

copyfileobj

import shutil

shutil.copyfileobj(fsrc, fdst[, length])
  • 파일류 객체 fsrc의 내용을 파일류 객체 fdst에 복사한다. length는 버퍼 크기이다.

copytree

import shutil

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, \
ignore_dangling_symlinks=False, dirs_exist_ok=False)
  • src를 루트로 하는 전체 디렉토리 트리를 dst라는 디렉토리에 재귀적으로 복사하고 대상 디렉토리를 반환한다.
    • 디렉토리의 권한과 시간은 copystat() 으로 복사되고, 개별 파일은 copy2() 를 사용하여 복사된다.
argument                                                                description
srcsrc
dstdst
symlinks=False
  • True : 소스 트리의 심볼릭 링크가 새 트리에서 심볼릭 링크로 표시되고, 플랫폼이 허용하는 한 원래 링크의 메타데이터가 복사된다. 거짓이거나 생략되면, 링크된 파일의 내용가 메타 데이터가 새 트리에 복사된다.
  • False 이면, 심볼릭 링크가 가리키는 파일이 존재하지 않으면, 복사 과정 종료 시 발생하는 Errror 예외의 에러리스트에 예외가 추가된다. 이 예외를 침묵 시키려면 선택적 ignore_dangling_symlinks 플래그를 참으로 설정할 수 있다.
  • dirs_exist_okdst or 누락된 부모 디렉토리가 이미 존재할 때 예외를 발생시킬지를 나타낸다.
    ignore=Noneignore가 주어지면, copytree() 가 방문하는 디렉토리와 os.listdir()가 반환한 이 디렉토리 내용의 리스트를 인자로 수신하는 callable이어야한다. copytree()는 재귀적으로 호출되기 때문에, 디렉토리마다 ignore 콜러블이 한 번 호출된다. callable은 현재 디렉토리에 상대적인 디렉토리와 파일 이름의 시퀀스를 반환해야 한다. (즉, 두 번 째 인자에 있는 항목의 부분집합); 이 이름들은 복사 과정에서 무시된다. ignore_patterns()를 사용하여, glob 스타일 패턴을 기반으로 이름을 무시하는 callable를 만들 수 있다.
    copy_functioncopy_function이 제공되면, 각 파일을 복사하는 데 사용되는 callable 이어야한다. 소스 경로와 대상 경로를 인자로 호출된다. 기본적으로 copy2()가 사용되지만, 같은 서명을 지원하는 (copy()와 같은) 모든 함수를 사용할 수 있다.인자 src, dst로 Raise an auditing event and trigger any active auditing hooks shutil.copytree를 발생시킨다.

    1. symlinks=False
      sym link걸린 것을 real 원본 복사


    • disk usage가 많아짐

    1. symlinks=True
      sym link 그대로 둠, 따라서 상대경로로 된 심볼릭 링크는 깨짐


    rmtree()

    profile
    pllpokko@alumni.kaist.ac.kr

    0개의 댓글