이번 튜토리얼에서는 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)
매개변수:
위 구문에서:
- 새로 생성된 디렉터리의 경로를 나타내는 문자열을 반환합니다.
예 -
# 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)
매개변수-
위 구문에서 -
다음 예를 이해해 봅시다 -
예 -
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을 반환합니다.