Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python(tarfile)을 사용하여 tar 아카이브 파일 읽기 및 쓰기

<시간/>

'tar' 유틸리티는 원래 UNIX 운영 체제용으로 도입되었습니다. 그 목적은 파일을 쉽게 배포할 수 있도록 종종 tarball이라고 하는 단일 아카이브 파일에 여러 파일을 수집하는 것입니다. Python 표준 라이브러리의 tarfile 모듈에 있는 함수는 tar 아카이브를 만들고 필요에 따라 tarball에서 추출하는 데 도움이 됩니다. 아카이브는 gzip, bz2 및 lzma 압축을 사용하거나 전혀 압축하지 않고 구성할 수 있습니다.

이 모듈에 정의된 주요 함수는 tar 파일에 쓰기 또는 읽기를 수행하는 main()입니다.

열기()

이 함수는 매개변수로 제공된 파일 이름에 해당하는 TarFile 객체를 반환합니다. 이 기능에는 모드라는 다른 매개변수가 필요하며 기본적으로 압축이 없음을 나타내는 'r'입니다. 다른 모드는 아래에 나열되어 있습니다.

시니어 번호 모드 및 작업
1 'r' 또는 'r:*'
투명 압축으로 읽기 위해 엽니다.
2 'r:'
압축 없이 읽을 수 있도록 엽니다.
3 'r:gz'
gzip 압축으로 읽기 위해 엽니다.
4 'r:bz2'
bzip2 압축으로 읽기 위해 엽니다.
5 'r:xz'
lzma 압축으로 읽기 위해 엽니다.
6 'x' 또는 'x:'
압축 없이 독점적으로 tarfile을 만듭니다.
7 'x:gz'
gzip 압축으로 tarfile을 만듭니다.
8 'x:bz2'
bzip2 압축을 사용하여 tar 파일을 만듭니다.
9 'x:xz'
lzma 압축으로 tarfile을 만듭니다.
10 'a' 또는 'a:'
압축 없이 추가하기 위해 엽니다.
11 'w' 또는 'w:'
압축되지 않은 쓰기를 위해 엽니다.
12 'w:gz'
gzip 압축 쓰기를 위해 엽니다.
13 'w:bz2'
bzip2 압축 쓰기를 위해 엽니다.
14 'w:xz'
lzma 압축 쓰기를 위해 엽니다.

모듈은 TarFile 클래스를 정의합니다. open() 함수 대신 생성자를 호출하여 TarFile 객체를 인스턴스화할 수 있습니다.

TarFile()

이 생성자에는 파일 이름과 모드 매개변수도 필요합니다. 모드 파라미터의 가능한 값은 위와 같습니다.

이 클래스의 다른 메서드는 다음과 같습니다.

추가()

이 방법은 아카이브에 파일을 추가합니다. 이 메소드는 파일, 디렉토리, 심볼릭 링크, 바로 가기 등의 이름이 될 수 있는 이름이 필요합니다. 디렉토리는 기본적으로 재귀적으로 추가됩니다. 재귀 추가를 방지하려면 재귀 매개변수를 False로 설정하십시오.

파일 추가()

이 메소드는 아카이브에 TarInfo 객체를 추가합니다.

extractall()

이 방법은 다른 경로가 명시적으로 제공되지 않은 경우 아카이브의 모든 구성원을 현재 경로로 추출합니다.

추출()

이 메소드는 지정된 경로로 지정된 멤버를 추출합니다. 기본값은 현재 경로입니다.

다음 예는 압축을 위해 gzip 알고리즘을 사용하여 tar 파일을 열고 그 안에 파일을 추가합니다.

>>> fp = tarfile.open("zen.tar.gz","w:gz")
>>> fp.add("zen.txt")
>>> fp.close()

현재 작업 디렉토리에 'zen.txt' 파일이 있다고 가정하면 'zen.tar.gz' 파일에 추가됩니다.

다음 코드는 tar 아카이브에서 파일을 추출하고 모든 파일(이 경우 켜짐만 있음)을 추출하여 현재 폴더에 넣습니다. 결과를 확인하기 위해 현재 폴더에서 'zen.txt'를 삭제하거나 이름을 변경할 수 있습니다.

>>> fp = tarfile.open("zen.tar.gz","r:gz")
>>> fp.extractall()
>>> fp.close()

현재 디렉토리에 'zen.txt' 파일이 나타납니다.

현재 디렉토리의 모든 파일로 구성된 tar를 생성하려면 다음 코드를 사용하십시오.

import tarfile, glob
>>> fp=tarfile.open('file.tar','w')
>>> for file in glob.glob('*.*'):
fp.add(file)
>>> fp.close()

명령줄 인터페이스

명령줄 인터페이스를 통해 tar 파일을 만들고 추출할 수 있습니다. 예를 들어 'lines.txt' 파일은 명령 창에서 실행된 다음 명령에 의해 tar 파일에 추가됩니다.

C:\python36 >python -m tarfile -c line.tar lines.txt

다음 명령줄 옵션을 사용할 수 있습니다.

-l 또는 --list tarfile의 파일을 나열합니다.
-c 또는 --create 소스 파일에서 tarfile을 생성합니다.
-e 또는 --extract output_dir이 지정되지 않은 경우 tarfile을 현재 디렉토리로 추출합니다.
-t 또는 --test tarfile이 유효한지 여부를 테스트합니다.
-v 또는 --verbose 상세 출력.

다음 명령줄은 현재 디렉터리 아래의 newdir 폴더에서 line.tar를 추출합니다.

C:\python36>python -m tarfile -e line.tar newdir/

다음 명령줄은 tar 아카이브의 모든 파일을 나열합니다.

C:\python36>python -m tarfile -l files.tar

tarfile 모듈에 대한 이 기사에서는 그 안에 정의된 클래스와 함수에 대해 설명했습니다.