이전포스팅
우리는 이전 포스팅에서 tarfile 모듈을 사용하여 기존 존재하던 tar파일을 압축해제 하는 방법에 대해 알아보았습니다.
2023.07.21 - [Python] - [Python] tarfile 모듈을 활용한 tar 압축, 해제 및 파일 목록 확인하기 - 1
또한, 새로운 압축 파일을 만들고 그 안에 새롭게 파일들을 추가하는 예제도 확인하였습니다.
오늘은 이외에도 기존 압축파일에서 특정 파일을 제거하거나 파일을 추가하는 방법에 대해 알아보도록 하겠습니다.
tar 파일에서 특정 파일을 제거
tar에서 특정 파일을 제거하는 예제는 다음과 같습니다.
import tarfile
with tarfile.open('/tmp/test2.tar', 'r') as tar:
files = tar.getmembers()
files = [f for f in files if f.name != 'tmp/test_text2.txt']
with tarfile.open('test3.tar', 'w') as tar_new:
for f in files:
tar_new.addfile(f, tar.extractfile(f))
이 예제에서는 먼저 이전 포스팅에서 만든 test2.tar라는 tar 파일을 읽습니다.
이후 특정 파일인 file2.txt를 제외한 나머지 파일들을 test3.tar라는 새로운 tar 파일에 저장합니다.
자세한 과정을 알아보겠습니다.
기존 test2.tar 파일을 열고 파일 목록을 가져옵니다.
파일 목록을 가져오는 과정에서 "test_text2.txt" 파일은 제외하고 가져옵니다.
이후, 새로운 test3.tar 압축파일을 만들고 특정 파일을 제외한 나머지를 추가합니다.
사실 특정파일을 제거하는 것처럼 보이지만, 특정 파일만 빼고 새로 압축을 하는 것과 동일합니다.
tar 파일에 파일 추가 예제
기존의 tar 파일에 새로운 파일을 추가하는 예제는 다음과 같습니다.
import tarfile
with tarfile.open('test3.tar', 'a') as tar:
tar.add('test_text4.txt')
이 예제에서는 test3.tar라는 기존의 tar 파일을 열고, add() 메서드를 사용하여 test_text4.txt를 추가합니다.
이 "test_text4.txt" 파일을 만들기 위해서는 이전 포스팅에서 언급한 것과 같이 echo 명령으로 생성하면 됩니다.
tar 파일 안에 특정 파일 찾는 예제
파일 안에서 특정 파일을 찾는 예제는 다음과 같습니다.
import tarfile
with tarfile.open('test3.tar', 'r') as tar:
for f in tar.getmembers():
if f.name == 'test_text4.txt':
print('압축 파일에서 해당 파일을 찾았습니다 :', f.name)
break
else:
print('압축 파일에서 해당 파일을 찾지 못했습니다.')
이 예제에서는 test3.tar라는 tar 파일을 읽고, getmembers() 메서드를 사용하여 각 파일을 순회하면서 test_text4.txt를 찾습니다. 파일을 찾으면 해당 파일의 이름을 출력하고 반복문을 종료합니다. 파일을 찾지 못한 경우에는 '압축 파일에서 해당 파일을 찾지 못했습니다.'을 출력합니다.
이와 같이 tarfile 모듈을 사용하여 새롭게 파일들을 압축하거나, 해지, 파일 목록 확인, 파일 제거 등 방법을 알아보았습니다.