logo

Python의 Shutil 모듈

이번 튜토리얼에서는 Python의 Shutil 모듈에 대해 알아봅니다. 새로운 복사 파일을 생성하고 이를 보관하고 Python 스크립트를 사용하여 한 파일에서 다른 파일로 콘텐츠를 복사하는 등 높은 수준의 파일 작업을 수행하는 방법에 대해 논의합니다. Shutil 모듈에 대한 기본적인 소개를 해보겠습니다.

Python Shutil 모듈

Python Shutil 모듈은 높은 수준의 파일 작업을 수행하는 기능을 제공합니다. 파일 개체와 함께 작동할 수 있으며 파일을 복사하고 제거하는 기능을 제공합니다. 모든 작업을 수행한 후 파일 개체를 만들고 닫는 등 낮은 수준의 의미를 처리합니다.

Shutil 모듈 작동

Pythonshutil 모듈에는 다양한 내장 메서드가 함께 제공됩니다. 우리는 몇 가지 중요한 방법을 탐구할 것입니다. 이 모듈 작업을 시작하려면 먼저 현재 Python 파일로 가져와야 합니다.

파일 복사

이 모듈은 다음을 제공합니다. 복사() 한 파일에서 다른 파일로 데이터를 복사하는 데 사용되는 함수입니다. 파일은 동일한 디렉터리에 있어야 하며 대상 파일은 쓰기 가능해야 합니다. 다음 구문을 이해해 봅시다.

통사론-

np.평균
 shutil.copyfile(source, destination, *, follow_symlinks = True) 

매개변수:

위 구문에서 -

  • 첫 번째 인수는 소스 파일의 경로를 표시하는 source입니다.
  • 두 번째 인수는 대상 파일의 경로를 표시하는 대상입니다.
  • 세 번째 인수는 선택 사항입니다. 이 매개변수의 기본값은 true입니다.
  • 새로 생성된 파일의 경로를 보여주는 문자열을 반환합니다.

다음 예를 이해해 봅시다.

예 -

 import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint')) 

산출:

 Empty Folder: [] File Copied Name: ['testcompare.py'] 

설명 -

copy() 함수는 디렉터리 이름을 인수로 사용합니다. 여기서는 metadata 복사되지 않은 경우 복사된 파일은 새로 생성된 파일로 간주됩니다. 이 방법은 파일의 모든 권한도 복제했습니다. 한 가지 주의할 점은 대상 파일이 이미 존재하는 경우 원본 파일로 대체된다는 것입니다.

arraylist 자바 정렬

또 다른 예를 살펴보겠습니다.

예 - 대상이 디렉터리인 경우 2

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest) 

산출:

 D:Python ProjectNewFilehello.txt 

앞서 언급했듯이 copy() 함수는 메타데이터를 복사하지 않습니다. 하지만 우리는 카피2() 메타데이터를 포함한 파일을 복사할 수 있는 기능입니다.

예 - 3: 복사 방법 사용 중 오류 처리

 # importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.') 

산출:

 Source and destination represents the same file. 

copy2() 함수

이 기능은 다음과 유사합니다. 복사() 기능. 한 파일의 내용을 다른 파일로 복사할 수도 있지만 유일한 차이점은 파일의 메타데이터를 보존할 수 있다는 것입니다. 다음 구문을 이해해 봅시다.

통사론:

 shutil.copy2(source, destination, *, follow_symlinks = True) 

매개변수:

위 구문에서 -

  • 첫 번째 인수는 소스 파일의 경로를 표시하는 source입니다.
  • 두 번째 인수는 대상 파일의 경로를 표시하는 대상입니다.
  • 세 번째 인수는 선택 사항입니다. 이 매개변수의 기본값은 true입니다.
  • 새로 생성된 파일의 경로를 보여주는 문자열을 반환합니다.

다음 예를 이해해 봅시다.

예 -

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1) 

산출:

 os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt 

Shutil.copyfile() 함수

이 방법은 소스 파일의 내용을 메타데이터가 필요한 대상 파일에 복사하는 데 사용됩니다. 소스와 대상에는 파일이 있어야 하며 대상 파일은 쓰기 권한을 제공해야 합니다. 대상 파일이 이미 있으면 새 파일로 대체되고, 그렇지 않으면 새 파일을 만듭니다.

다음 구문을 살펴보겠습니다.

통사론:

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

매개변수:

첫 번째 문자 제거 엑셀

위 구문에서 -

  • 첫 번째 인수는 소스 파일의 경로를 표시하는 source입니다.
  • 두 번째 인수는 대상 파일의 경로를 표시하는 대상입니다.
  • 세 번째 인수는 선택 사항입니다. 이 매개변수의 기본값은 true입니다.
  • 새로 생성된 파일의 경로를 보여주는 문자열을 반환합니다.

다음 예를 이해해 봅시다.

예 -

 import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1) 

산출:

 D:Python ProjectNewFilehi.txt 

Shutil.copytree() 함수

이 방법은 전체 디렉터리를 복제하는 데 사용됩니다. 소스에 루트가 있는 전체 디렉토리 트리를 대상 디렉토리에 복사합니다. 대상 디렉터리가 아직 존재하지 않아야 합니다. 다음 구문을 살펴보겠습니다.

통사론:

아날로그 통신
 shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False) 

매개변수:

위 구문에서:

    소스 -소스 디렉터리의 경로를 보여줍니다.손 -대상 디렉터리의 경로를 보여줍니다.심볼릭 링크(선택 사항) -부울 값(True 및 False)을 사용합니다. 원본 링크 또는 링크의 어떤 메타데이터가 새 트리에 복사되는지에 따라 다릅니다.무시(선택 사항) -기본적으로 None 이지만 무시가 전달되면 인수로 받는 콜러블이어야 합니다. 해당 디렉토리는 copytree()에 의해 방문됩니다.copy_function(선택사항) -copy2는 이 매개변수의 기본값입니다. 그만큼 복사() 함수를 매개변수로 사용할 수 있습니다.ignore_dangling_symlinks(선택 사항) -이 매개변수는 심볼릭 링크가 가리키는 파일이 존재하지 않는 경우 예외를 발생시키는 데 사용됩니다.
  • 새로 생성된 디렉터리의 경로를 나타내는 문자열을 반환합니다.

예 -

 # importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1) 

산출:

 Destination path: D:Python ProjectNewFolder 

Shutil.rmtree()

이 방법은 전체 디렉토리 트리를 삭제하는 데 사용됩니다. 다음 구문을 살펴보겠습니다.

통사론:

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

매개변수-

위 구문에서 -

    길 -파일 경로를 나타냅니다. 경로류 객체는 문자열 또는 바이트열 객체입니다.무시_오류 -이 인수가 True이면 제거가 무시됩니다.오류 발생 -만약에 무시_오류 false인 경우 이러한 오류는 onerror에 지정된 핸들러를 호출하여 처리됩니다.

다음 예를 이해해 봅시다 -

예 -

 import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1) 

위의 코드는 주어진 디렉토리를 제거합니다.

Shutil.which() 함수

그만큼 Shutil.which() 함수는 주어진 cmd가 호출되면 실행될 실행 가능한 응용 프로그램의 경로를 가져오는 데 사용됩니다. 주어진 경로에서 파일을 찾습니다. 다음 구문을 살펴보겠습니다.

통사론:

버블 정렬
 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

매개변수

위 구문에서 -

    명령 -파일을 나타내는 문자열입니다.모드 -메소드가 실행되어야 하는 파일의 모드를 지정합니다.길 -이 매개변수는 사용할 경로를 지정합니다.
  • 이 메소드는 실행 가능한 애플리케이션에 대한 경로를 반환합니다.

다음 예를 이해해 봅시다.

예 -

 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

산출:

 C:Pythonpython.EXE 

컴퓨터에서 주어진 파일을 찾고, 파일이 발견되면 파일 경로를 반환하고, 그렇지 않으면 None을 반환합니다.