python 批量创建线程_python多线程定时器批量生成tar.gz压缩包 和 ok文件

'''

作者:hawking21

功能:多线程定时器批量生成tar.gz压缩包 和 ok文件

txt文件内容格式 最后的数字:单位默认是分钟

www.1.cn|111page|1

www.2.cn|222page|2

www.3.cn|333page|3

'''

import datetime,os,time

import threading

class Timer(threading.Thread):

'''创建多线程,外部传参设置等待时间'''

def __init__(self,webname,pagename,jiange):

threading.Thread.__init__(self)

self.jiange = jiange #间隔

self.webname = webname

self.pagename = pagename

def makedir(self):

'''动态生成文件夹,参数1:网站名,参数2:页面名'''

#今日时间 20181102

NOW_TIME = time.strftime('%Y%m%d',time.localtime()) #_%H:%M:%S # print(NOW_TIME)# print(type(NOW_TIME)) str

MENU_PATH = self.webname + os.sep + self.pagename

if not os.path.exists(MENU_PATH):

os.makedirs(MENU_PATH)

dir_list = os.listdir(MENU_PATH)

list1,num_max=[],0

for i in dir_list:

datename_list = i.split('_')

if datename_list[0] == NOW_TIME:#取前8位,对比今天日期

count= int(datename_list[1])

# print('count',count)

list1.append(count)

num_max = max(list1) if len(dir_list) !=0 else 0

# print('最大序号 num_max=',num_max)

count_max =len(str(num_max))

# print('count_max位数是',count_max)

if 0<= num_max < 9:

num0 = '000'

if 9<= num_max <99:

num0 = '00'

if 99<= num_max:

num0 = '0'

# 当日时间_序号 20181102_0012

time_num = '{0}_{1}{2}'.format(NOW_TIME,num0,num_max+1)

time_path = MENU_PATH+os.sep+'{0}_{1}{2}'.format(NOW_TIME,num0,num_max+1)

datepath = MENU_PATH+os.sep+'{0}_{1}{2}'.format(NOW_TIME,num0,num_max+1) + os.sep+ 'file'

os.makedirs(datepath) #wallstreetcn.com\live_forex\20190218_0002\file

# print("datepath",datepath)

#下一步对当前 最新 time_path 进行压缩生成 tar.gz 和ok文件

import tarfile,stat # arcname#解压后显示的前缀路径---------------------

with tarfile.open(self.webname + '_' +self.pagename +'_' + time_num + ".tar.gz", 'w:gz') as tar:

tar.add(time_path, arcname=self.webname +os.sep + self.pagename +os.sep +time_num)# .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz

pass

with open(self.webname +'_' + self.pagename +'_' + time_num + '.ok' , "wb") as f:

pass

os.chmod(self.webname + '_' + self.pagename +'_' + time_num + ".ok", stat.S_IRUSR+stat.S_IWUSR+stat.S_IRGRP+stat.S_IROTH)

print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>当前批次:",time_num)

def run(self): #多线程类方法 一定要 run 不可其他名字!!!!!!!!!!!!!!!

sched_Timer =datetime.datetime.now()+datetime.timedelta(seconds=1)

print("无限循环等待中。。。")

flag=0 #设置判断标志

while True:

now=datetime.datetime.now()

str_now = now.strftime("%Y-%m-%d %H:%M:%S")

str_sched_Timer=sched_Timer.strftime("%Y-%m-%d %H:%M:%S")

if str_now == str_sched_Timer:#转换成字符串,再比对比才成功

time.sleep(1)

print("执行生成文件 现在时间:",str_now)

# self.run_Task() #!!!!!!!!!!!!!!!!!!

self.makedir()

flag=1

elif flag==1:

sched_Timer=sched_Timer + datetime.timedelta(minutes=self.jiange)#(seconds=23,minutes=35,hours=14) (days=1)

# print("else 等待间隔获取到,设置flag=0,")

flag=0

if __name__ == '__main__':

txt_path = os.getcwd() + os.sep + "test.txt"#"D:\dev\\test.txt"

'''主程序,参数1:txt路径,读取txt文本,获取参数'''

txt_path = txt_path #"D:\dev\\test.txt" # D:\\ 两个\\是代表转译3

data = []

for line in open(txt_path,"r"): #设置文件对象并读取每一行文件

data.append(line) #将每一行文件加入到list中

print("获取文件信息成功,只能三个参数,第三个默认为数字 单位秒",data) #得到列表,每行是一个元素['www.cbrc.gov.cn|newslistdoc|2h\n', 'www.pbc.gov.cn|goutongjiaoliu|2h\n',

# ['www.cbrc.gov.cn|newslistdoc|2h\n', 'www.pbc.gov.cn|goutongjiaoliu|2h\n', 'www.safe.gov.cn|whxw|2h\n', 'www.csrc.gov.cn|zjhxwfb|2h\n', 'cmispub.cicpa.org.cn|cicpa_web|mon1day\n', 'wallstreetcn.com|live_forex|10min']

a = data[0].split('|')# print(a[0],a[1]) #www.cbrc.gov.cn newslistdoc

for i in data:#range(0,len(data)):

a = i.split('|') #www.cbrc.gov.cn newslistdoc

webname,pagename,jiange= a[0],a[1],int(a[2])

Timer(webname,pagename,jiange).start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值