IT박스

Python을 사용하여 전체 압축 tar 파일을 만드는 방법은 무엇입니까?

itboxs 2020. 9. 13. 10:14
반응형

Python을 사용하여 전체 압축 tar 파일을 만드는 방법은 무엇입니까?


Python에서 압축하여 .tar.gz 파일을 어떻게 만들 수 있습니까?


전체 디렉토리 트리에 대한 .tar.gz(일명 .tgz) 을 빌드하려면 :

import tarfile

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        tar.add(source_dir, arcname=os.path.basename(source_dir))

import tarfile
tar = tarfile.open("sample.tar.gz", "w:gz")
for name in ["file1", "file2", "file3"]:
    tar.add(name)
tar.close()

tar.bz2 압축 파일을 만들려면 파일 확장자 이름을 ".tar.bz2"로, "w : gz"를 "w : bz2"로 바꾸십시오.


"gzip 압축 쓰기를 위해 열기"를 의미하는으로 tarfile.open호출합니다 mode='w:gz'.

당신은 아마 파일 이름 (끝 할 수 있습니다 name에 인수 open로)를 .tar.gz,하지만 압축 능력에 영향을주지 않습니다.

BTW, 일반적으로를 사용하여 압축 할 수 있는 것보다 더 잘 압축 할 수있는 'w:bz2'것과 마찬가지로 .tarbzip2gzip


이전 답변 은 파이썬 tarfile에서 .tar.gz파일 을 생성하기 위해 파이썬 모듈을 사용하는 것이 좋습니다. 그것은 아카이브 속도에 심각한 단점이 있지만 분명히 좋은 파이썬 스타일의 솔루션입니다. 이 질문tarfile 은 Linux에서 직접 명령을 호출하는 것보다 약 두 배 느리다는 것을 언급합니다 . 내 경험에 따르면이 추정은 꽤 정확합니다.

따라서 더 빠른 보관을 위해 subprocess모듈을 사용하여 직접 Linux 명령을 사용할 수 있습니다 .

subprocess.call(['tar', '-czf', output_filename, file_to_archive])

이 tar.gz 파일에서 열린보기 디렉토리에서 압축하십시오. 해결에서 os.path.basename (file_directory)을 사용하십시오.

with tarfile.open("save.tar.gz","w:gz"):
      for file in ["a.txt","b.log","c.png"]:
           tar.add(os.path.basename(file))

tar.gz 파일에서의 사용 디렉토리에서 압축

참고 URL : https://stackoverflow.com/questions/2032403/how-to-create-full-compressed-tar-file-using-python

반응형