30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
#!/usr/bin/env python
|
|
import tarfile
|
|
import os
|
|
|
|
for tar_file in ('pres.tar', 'NOT_A.tar', 'potus.tar.gz'): # <1>
|
|
filename = os.path.join('../DATA', tar_file)
|
|
is_valid = tarfile.is_tarfile(filename) # <2>
|
|
text = 'IS' if is_valid else 'IS NOT'
|
|
print("{} {} a tarfile".format(filename, text))
|
|
print()
|
|
|
|
with tarfile.open('../DATA/pres.tar') as tarfile_in: # <3>
|
|
for member in tarfile_in: # <4>
|
|
print(member.name, member.size) # <5>
|
|
print()
|
|
|
|
with tarfile.open('../DATA/pres.tar') as tarfile_in:
|
|
tarfile_in.extract('presidents.txt', path='../TEMP') # <6>
|
|
|
|
with tarfile.open('../DATA/potus.tar.gz') as tarfile_in:
|
|
tarfile_in.extract('presidents.csv', path='../TEMP') # <6>
|
|
|
|
with tarfile.open('../TEMP/text_files.tar', 'w') as tarfile_out: # <7>
|
|
tarfile_out.add('../DATA/parrot.txt') # <8>
|
|
tarfile_out.add('../DATA/alice.txt') # <8>
|
|
|
|
with tarfile.open('../TEMP/more_text_files.tar.gz', 'w:gz') as tar_gz_write: # <9>
|
|
tar_gz_write.add('../DATA/parrot.txt') # <8>
|
|
tar_gz_write.add('../DATA/alice.txt') # <8>
|