Python学习笔记-2017.5.4thon学习笔记-2017.5.22

Python学习记录,仅作为参考,不作他用:

#关于Json和Pickle的使用
#主要用于写入和读取文件时的格式转换,比如写入时格式是字典,读取时也是字典
#主要区别是Json用于各种语言之间的格式统一,因此支持的格式转换较少,只支持普通的字典、列表、元组、集合、字符串等
#Pickle支持的格式和场景比较多,如内存地址等,专用于Python,但必须使用二进制。
#举例说明:
#Json
# import json
a = [1,2,3,4,5,6,7,8,9,"a", "b", "c"]
f = open("test.txt", "w")
# f.write(json.dumps(a))和下面的写法完全相同
json.dump(a, f)
f.close()


#读取
f2 = open("test.txt", "r")
b = json.load(f2)
print(b, type(b))
#

import pickle
def hello():
    pass
def jack():pass
#    abc = hello
file = open("test2.txt", "wb")
# f.write(pickle.dumps(a))和下面的写法完全相同
pickle.dump(a, file)
file.close()

#读取
file2 = open("test2.txt", "rb")
b2 = pickle.load(file2)
print(b2, type(b2))
file2.close()

  

 

Time模块:

常用的时间模块之一,举例代码说明:

import time
print(time.altzone/3600) #与utc时间,也就是格林威治时间的差,以秒为单位;
print(time.asctime())#按照这个格式打印时间,一般是美国格式;
print(time.localtime())#返回当地时间和从今年开始到现在的各个时间,这个对象可以加.使用方法来调用,如:
t = time.localtime()
print(t.tm_year)
print(time.gmtime())#返回utc时间
print(time.time()/3600/24/365)#1970年到现在的时间,以秒为单位,1970年认为是unix的诞生元年
print(time.localtime(time.time()+3600*3))#时间计算加小时

时间的计算,举例代码说明,一般来说时间的计算,如果使用time模块,分为三个过程;

1、字符串转换为时间对象;

2、时间对象转换为时间戳;

3、时间戳进行计算。

时间如果从时间戳转为时间,也分为三个过程:

1、时间戳计算完成;

2、时间戳转为时间对象;

3、事件对象转为时间。

举例说明时间计算为时间戳;

nowtime = time.strptime("2017-11-23 17:00:00", "%Y-%m-%d %H:%M:%S")#转为时间对象,注意后边的格式和前面相同,月和日期为小写。
nowtime2 = (time.mktime(nowtime)-3600)#转为时间戳,时间戳以秒为单位,可以进行计算。

 举例说明时间戳转换为时间:

nowtime3 = time.localtime(nowtime2)#转为时间对象
nowtime4 = time.strftime("%Y-%m-%d %H:%M:%S", nowtime3)#转为时间戳

 如上是time模块对于时间的调用和计算,其实,个人更喜欢Datertime模块,在计算方面不用转换,如下为基本代码示例:

import datetime
print(datetime.datetime.now())#现在时间
print(datetime.date.fromtimestamp(time.time()))#按照格式打印现在时间,当然,可以加入计算
print(datetime.datetime.now() + datetime.timedelta(days=1, hours=3, minutes= 4, seconds=30))#时间的计算加减,不用转换事件对象和时间戳等概念
now = datetime.datetime.now()
print(now.replace(month=6))#也可以直接replace时间,不用计算。

 random模块,random模块相对简单,基本可以理解为简单的随机代码功能,如下是代码示例:

import random
print(random.random)#理论上打印为小数,但是我打印的是个对象;
print(random.randint(1,5))#打印1到5之间的随机数;
print(random.randrange(1,5))#也是打印1到5之间的随机数,但是不打印5!,这是和randint之间的区别。
print(random.sample(range(100),5))#在100的列表中,随机打印五个数字,当然,rang(100)可以用其他变量来代替,比如某个其他源,可以是其他对象。

 string模块,学习了两个常用的写法,示例如下:

import string
print(string.ascii_letters)#ascii码,输出为abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits)#digits数字,输出为0123456789

 配合使用:

print(string.ascii_letters + string.digits)
library = string.ascii_letters + string.digits
print("".join(random.sample(library,5)))

 

 

 

 

补充时间模块:

# 时间戳
# 字符串时间
# 元组形式的时间,9个对象
import time
# help(time)
time.timezone#和标准时间的差值
time.daylight#夏令时间,比标准时间还晚一个小时,是否采用了夏令时,0为不使用
time.time()#时间戳,以seconds为单位
time.sleep(1)#停止时间
time.gmtime()#写参数,就把参数的秒转换为元组形式的时间,不写参数,直接返回当前的UTC标准时间
time.localtime()#与上面的相同,只不过转换的是本地时间
#取出当前时间
Now_time = time.localtime()
print(Now_time)
print(Now_time.tm_year)
#元组时间转换为时间戳
print(time.mktime(Now_time))
#元组时间转换为字符串时间
print(time.strftime("%Y-%m-%d %H:%M:%S", Now_time))
#字符串时间转换为元组时间
print(time.strptime("2017-07-27 21:51:46", "%Y-%m-%d %H:%M:%S"))
#元组时间转换为默认字符串或者自定义,
print(time.asctime())#如果不写,就传入当前时间
#把时间戳转换为默认格式
time.ctime()#完成的效果和上面是一样的,区别是传入的参数,按asc接收的参数是元组,ctime接收的参数是时间戳
#Datetime模块,基于Time模块的高层封装
import datetime
print(datetime.datetime.now())#获取当前时间
a = datetime.datetime.now() + datetime.timedelta(days=3)#时间计算,添加三天.默认以天为单位,可以不写days
b = datetime.datetime.now() + datetime.timedelta(days=-3)#时间计算,添加三天,小时和分钟写hours和minutes
#获取当前时间后,替换当前时间
c = datetime.datetime.now().replace(day=20)
print(a, b,c )

  

posted @ 2017-05-22 16:26  万青  阅读(161)  评论(0)    收藏  举报