import time
# unix time chuo
time.time()
# Time
time.localtime()
#########################a.unix time stamp#b.time object#c.string ##########################----------------------------#a=>b
time.localtime(time.time())
#----------------------------#----------------------------#b=>a
time.mktime(time.localtime())
#----------------------------#----------------------------#b=>cstring = time.strftime('%Y%m%D %H%M%S',time.localtime())
#----------------------------#----------------------------#c=>b
time.stfptime(string , '%Y%m%D %H%M%S')
#----------------------------
2.random
import random
print random.randint(0,5)
random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
print random.uniform(10, 20)
print random.uniform(20, 10)
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20
print random.randint(20, 20) #结果永远是20 #从指定范围内,按指定基数递增的集合中 获取一个随机数random.randrange(10, 100, 2)
print random.choice("学习Python")
print random.choice(["JGood", "is", "a", "handsome", "boy"])
print random.choice(("Tuple", "List", "Dict"))
p = ["Python", "is", "powerful", "simple", "and so on..."]
random.shuffle(p)
print p
从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回
print slice
print list #原有序列并没有改变。
3.java style’s python(no need but just for fun)
classDBFactory(object):
rds=RedisConnector.reuse()
__dayList=[]
__oneDayFile=[]
@propertydefdayList(self):return self.__dayList
@dayList.setterdefdayList(self,dlist):
self.__dayList=dlist
@propertydefoneDayFile(self):return self.__oneDayFile
@oneDayFile.setterdefoneDayFile(self,dlist):
self.__oneDayFile=dlist
@abstractmethoddefgetTimes(self):pass@abstractmethoddefgetLastDays(self):pass@abstractmethoddefcheck(self):pass@abstractmethoddefkdb_save(self):passclassModelSetting(DBFactory):
BASEDIR=MEDIA_ROOT+'/data_project/ModelSettings'def__init__(self):
self.getLastDays()
defgetLastDays(self):
daylist=sorted(os.listdir(self.BASEDIR))[-2:]
self.dayList=[os.path.join(self.BASEDIR,x)for x in daylist]
tmp=['/'.join([self.BASEDIR,x,'%s_model_settings_%s.csv'%(x,y)]) for x in daylist for y in ['day','night']]
self.oneDayFile=[x for x in tmp if os.path.exists(x)]
defkdb_save(self):for x in self.oneDayFile:
print'to db 'print x
write_model_setting(x)
defgetTimes(self):return map(os.path.getmtime,self.oneDayFile)
defcheck(self):print"ModelSetting checking begin..."
rds_tmp=map(float,json.loads(self.rds.get('rss:modelsetting:checktime')))
cur_time=self.getTimes()
ifnot rds_tmp:
self.kdb_save()
if rds_tmp and cur_time!=rds_tmp:
self.kdb_save()
self.rds.set('rss:modelsetting:checktime',json.dumps(cur_time))
classTradeLog(DBFactory):
BASEDIR=MEDIA_ROOT+'/data_project/TunnelLogs'def__init__(self):
self.getLastDays()
defgetLastDays(self):'''get last 2 days return the list with 4 elems:''''''eg./mnt/Dataproject/TunnelLogs/20170322/Day'''
ModelSettingBaseDir =self.BASEDIR
self.dayList=sorted(os.listdir(ModelSettingBaseDir))[-2: ]
daylist=map(lambda x: os.path.join(ModelSettingBaseDir, x,'Day'), self.dayList)
nightlist=map(lambda x: os.path.join(ModelSettingBaseDir, x,'Ngt'), self.dayList)
tmp=[]
self.dayList=daylist+nightlist
for folderpath in self.dayList:
if os.path.exists(folderpath):
tlist=[os.path.join(folderpath,x)for x in os.listdir(folderpath)]
tmp.append(tlist)
self.oneDayFile=tmp
defkdb_save(self):for x in self.dayList:
print'to db'if os.path.exists(x):
print x
write_tunnel_log(x)
defgetTimes(self):
timelist=[]
for x in self.oneDayFile:
timelist.append(map(os.path.getmtime,x))
return timelist
defcheck(self):print"TradeLog checking begin..."
rds_tmp=json.loads(self.rds.get('rss:tunnel_log:checktime'))
cur_time=self.getTimes()
ifnot rds_tmp:
self.kdb_save()
if rds_tmp and cur_time!=rds_tmp:
self.kdb_save()
self.rds.set('rss:tunnel_log:checktime',json.dumps(cur_time))
defrun():
ms=ModelSetting()
ms.check()
ml=TradeLog()
ml.check()
if __name__=="__main__":
run()
#import logging##logging.basicConfig(level=logging.DEBUG,# format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',# datefmt='%a, %d %b %Y %H:%M:%S',# filename='myapp.log',# filemode='w')# #logging.debug('This is debug message')#logging.info('This is info message')#logging.warning('This is warning message')
Demo3:
#log.pyimport logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='myapp.log',
filemode='w')
##################################################################################################定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
#################################################################################################
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
#test.py
from log import logging
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
4.simple Test Demo: English reading.(just for fun)
#urlget.pyfrom lxml import etree
url="http://www.dioenglish.com/home.php?mod=space&uid=114322&do=blog&id=55535"
xp = '//div[@id="blog_article"]'defget(url,xp):
t = urllib.urlopen(url).read()
sele = etree.HTML(t)
#content = sele.xpath('//div[@id="blog_article"]/p/span/font/text()')if xp[-2:] =='()':
info = sele.xpath(xp)
else:
content = sele.xpath(xp)
info = content[0].xpath('string(.)').encode('utf-8')
return info
------------------------------------------------------
#main.pyfrom urlget import get
from textwrap import wrap
import urlget
t = get(urlget.url,urlget.xp)
t = get('http://www.dioenglish.com/home.php?mod=space&uid=27677&do=blog&id=55547',urlget.xp)
tt=wrap(t,100)
t=[]
for i in range(len(tt)):
t.append("\033[1;31;43m%d\033[0m %s"%(i,tt[i]))
print t[0]
defl1():for x in t: yield x
defl2():for x in reversed(t): yield x
c1=l1()
c2=l2()
defget(i,c):try:
ss=[]
for x in range(i):
ss.append(c.next())
except StopIteration:
passreturn ss
##print get(4,c2)#print get(4,c2)#print get(4,c2)#whileTrue:
st = raw_input(">")
print repr(st)
if st in ['n','']:
print'\n'.join(get(4,c1))
if st == 'l':
print'\n'.join(reversed(get(4,c2)))
if st =='g 0':
c1=l1()
print'\n'.join(get(4,c1))
5.pacakge:without test
#sys.path.append('../')
#sys.path.append('../agentproxy/')
#sys.path.append('../site/')
from agentproxy.rewrite_kdb import write_tunnel_log
from agentproxy.rewrite_kdb import write_model_setting