tarfile模块使用
# encoding=utf-8
import tarfile
import os
import threading
import time
import multiprocessing
import datetime
if_tar_complete = False
lock = threading.Lock()
def get_if_tar_complete():
global if_tar_complete
lock.acquire()
if_tar_complete_tmp = if_tar_complete
lock.release()
return if_tar_complete_tmp
def set_if_tar_complete_true():
global if_tar_complete
lock.acquire()
if_tar_complete = True
lock.release()
def read_file():
global if_tar_complete
starttime = datetime.datetime.now()
time.sleep(0.1)
while(not get_if_tar_complete()):
if(get_if_tar_complete()):
print("true")
else:
print("false")
with tarfile.open("sample.tar", "r") as tar:
file_num = 0
dic_num = 0
other_num = 0
all_num = 0
for tarinfo in tar:
all_num = all_num + 1
print tarinfo.name, "is", tarinfo.size, "bytes in size and is",
if tarinfo.isreg():
file_num = file_num + 1
print "a regular file."
elif tarinfo.isdir():
dic_num = dic_num + 1
print "a directory."
else:
other_num = other_num + 1
print "something else."
print(file_num)
print(dic_num)
print(other_num)
print(all_num)
str = r"file_num : %s dic_num : %s other_num: %s all_num: %s"%(file_num, dic_num, other_num, all_num)
with open("/home/zxdb6/test/result", "w") as f:
f.write(str)
endtime = datetime.datetime.now()
print '运行时间:%ds'%((endtime-starttime).seconds)
time.sleep(0.1)
def tar_file():
global if_tar_complete
with tarfile.open("sample.tar", "w") as tar:
tar.add("/home/zxdb6/data")
print("tar success")
set_if_tar_complete_true()
if __name__ == '__main__':
t1 =threading.Thread(target=tar_file,args=())
t2 =threading.Thread(target=read_file,args=())
t1.start()
t2.start()
t1.join()
t2.join()