一、时间模块time

python有三种表达时间的形式:时间戳、格式化字符串输出和元组。

时间戳:从1970年1月1日00:00:00开始按秒计算的偏移量,返回值是一个float型。

格式化字符串输出:它是一个字符串形式如"2017-04-26"

元组:struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

# <1> 时间戳

>>> import time
>>> time.time() #--------------返回当前时间的时间戳 1493136727.099066 # <2> 时间字符串 >>> time.strftime("%Y-%m-%d %X")
'2017-04-26 00:32:18' # <3> 时间元组 >>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26,
tm_hour=0, tm_min=32, tm_sec=42, tm_wday=2,
tm_yday=116, tm_isdst=0)

实践知真知

计算机识别时间戳,供计算机计算使用,格式化字符串是方便人直观的看到,元组是方便程序员调用相关属性。

#一 时间戳<---->结构化时间:  localtime/gmtime   mktime

>>> time.localtime(3600*24)
>>> time.gmtime(3600*24) >>> time.mktime(time.localtime()) #字符串时间<---->结构化时间: strftime/strptime >>> time.strftime("%Y-%m-%d %X", time.localtime())
>>> time.strptime("2017-03-16","%Y-%m-%d")

时间戳—格式化,字符串-格式化

>>> time.asctime(time.localtime(312343423))
'Sun Nov 25 10:03:43 1979'
>>> time.ctime(312343423)
'Sun Nov 25 10:03:43 1979'

格式化—字符串,时间戳—字符串

二、random模块

人如其名,主要用于随机数的使用,如验证码、彩票、抽奖等需要随机性的时候使用。

>>> import random
>>> random.random() # 大于0且小于1之间的小数
0.7664338663654585 >>> random.randint(1,5) # 大于等于1且小于等于5之间的整数 >>> random.randrange(1,3) # 大于等于1且小于3之间的整数 >>> random.choice([1,'',[4,5]]) # #1或者23或者[4,5] >>> random.sample([1,'',[4,5]],2) # #列表元素任意2个组合
[[4, 5], ''] >>> random.uniform(1,3) #大于1小于3的小数
1.6270147180533838 >>> item=[1,3,5,7,9]
>>> random.shuffle(item) # 打乱次序
>>> item
[5, 1, 3, 7, 9]
>>> random.shuffle(item)
>>> item
[5, 9, 7, 1, 3]

最强的武器是补丁

import random

def v_code():

    code = ''
for i in range(5): num=random.randint(0,9)
alf=chr(random.randint(65,90))
add=random.choice([num,alf])
code="".join([code,str(add)]) return code print(v_code())

验证码

三、hashlib

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串。

import hashlib

md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?')
print md5.hexdigest() #计算结果如下:
#d26a53750bc40b38b65a520292f69306
md5 = hashlib.md5()
md5.update('how to use md5 in ')
md5.update('python hashlib?')
print md5.hexdigest()
######
#hash1等算法和md5使用方法一样

用法

任何允许用户登录的网站都会存储用户登录的用户名和口令。如何存储用户名和口令呢?方法是存到数据库表中。

如果以明文保存用户口令,如果数据库泄露,所有用户的口令就落入黑客的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要。

很多用户喜欢用123456,888888,password这些简单的口令,于是,黑客可以事先计算出这些常用口令的MD5值,得到一个反推表。这就实现了我们所说的撞库。它可以由此得出你所使用的摘要方法。

为了确保这情况的出现,我们就使用一种"加盐"的手法。即自己系统给用户的密码经过复杂化处理。

经过Salt处理的MD5口令,只要Salt不被黑客知道,即使用户输入简单口令,也很难通过MD5反推明文口令。

但是如果有两个用户都使用了相同的简单口令比如123456,在数据库中,将存储两条相同的MD5值,这说明这两个用户的口令是一样的。有没有办法让使用相同口令的用户存储不同的MD5呢?

如果假定用户无法修改登录名,就可以通过把登录名作为Salt的一部分来计算MD5,从而实现相同口令的用户也存储不同的MD5。

摘要算法在很多地方都有广泛的应用。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。

 四、OS

是py和os交互的一些函数,主要用于使用一些系统调用。

'''
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
'''

OS

五、SYS模块

和py解释器相关的函数

import sys
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称

sys

最新文章

  1. JavaScript 操作 Cookie
  2. Web安全
  3. ArcEngine编辑保存错误:Unable to create logfile system tables
  4. js每天进步一点点4
  5. ZOJ2332 Gems(最大流)
  6. Matlab Delete Row or Col 删除矩阵的行或列
  7. oracle11g 重新配置em
  8. 用bat使用date和time命令
  9. Mysql 复制表结构 及其表的内容
  10. 搭建Minisipserve服务器实现局域网内IOS客户端idoubs的通信
  11. eclipse hibernate导出数据库实体类
  12. maven 集成tomcat6,tomcat7
  13. QEMU KVM Libvirt手册(10):Managing Virtual Machines with libvirt
  14. SQLite3问题
  15. Zabbix11.3 Zabbix SNMP 常用OID列表
  16. 安装mysql数据库出现错误&quot;系统找不到指定文件&quot;
  17. Microservice Patterns
  18. 自学java第六周的总结
  19. 分布式版本控制工具:git与Mercurial(zz)
  20. 团队项目之UML图设计---WeEdit

热门文章

  1. [C++基础] 纯虚函数
  2. nginx利用try_files实现多个源
  3. vue模板快速生成
  4. leetcode-mid-others-621. Task Scheduler
  5. Windows2008 r2“Web服务器HTTP头信息泄露”漏洞修复
  6. zay大爷的神仙题目 D1T2-腐草为萤
  7. c# SQLite 判断表、字段是否存在的方法,新增、删除、重命名列
  8. 服务器控件调用JS函数
  9. Dataframe的索引问题
  10. C#SQL小结