Python学习笔记10(常用模块)

1.os模块

os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示:

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

2.sys模块

用于提供对解释器相关的操作

1 sys.argv           命令行参数List,第一个元素是程序本身路径
2 sys.exit(n)        退出程序,正常退出时exit(0)
3 sys.version        获取Python解释程序的版本信息
4 sys.maxint         最大的Int值
5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
6 sys.platform       返回操作系统平台名称
7 sys.stdout.write('please:')
8 val = sys.stdin.readline()[:-1]

3.hashlib模块

用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512 ,MD5算法

 1 import hashlib
 2  
 3 # ######## md5 ########
 4  
 5 hash = hashlib.md5()
 6 hash.update('admin')
 7 print hash.hexdigest()
 8  
 9 # ######## sha1 ########
10  
11 hash = hashlib.sha1()
12 hash.update('admin')
13 print hash.hexdigest()
14  
15 # ######## sha256 ########
16  
17 hash = hashlib.sha256()
18 hash.update('admin')
19 print hash.hexdigest()
20  
21  
22 # ######## sha384 ########
23  
24 hash = hashlib.sha384()
25 hash.update('admin')
26 print hash.hexdigest()
27  
28 # ######## sha512 ########
29  
30 hash = hashlib.sha512()
31 hash.update('admin')
32 print hash.hexdigest()

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

1 import hashlib
2  
3 # ######## md5 ########
4  
5 hash = hashlib.md5('898oaFs09f')
6 hash.update('admin')
7 print hash.hexdigest()

还不够吊?python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

1 import hmac
2 h = hmac.new('wueiqi')
3 h.update('hellowo')
4 print h.hexdigest()

不能再牛逼了!!!

4.json和pickle模块

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换
  • 两者用法几乎一致

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

  • json.dumps():对数据进行编码(例如字典--->字符串)。
  • json.loads():对数据进行解码(例如字符串--->字典)。
  • dump与load用法与dumps和loads用法一样,只是和文件结合起来了,例如把字典转换成字符串存放在文件中,或者从文件中读取字符串转换成字典。
 1 import json
 2 
 3 data = {
 4     "no":111,
 5     "name":"zhang",
 6     "love":"spring"
 7 }
 8 
 9 print(data)
10 print(data.get("love"))
11 
12 json_str = json.dumps(data)
13 
14 print(json_str)
15 #print(data.get("love"))  #再用key去取值会报错

可以使用json.loads()方法使其转换为字典格式

1 data2 = json.loads(json_str)
2 print ("data2['name']: ", data2['name'])
3 print ("data2['love']: ", data2['love'])

 5.time模块

time模块中时间表现的格式主要有三种:

  • timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
  • struct_time时间元组,共有九个元素组。
  • format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

 1 import time
 2 
 3 # 生成timestamp
 4 time.time()
 5 # 1477471508.05
 6 #struct_time to timestamp
 7 time.mktime(time.localtime())
 8 #生成struct_time
 9 # timestamp to struct_time 本地时间
10 time.localtime()
11 time.localtime(time.time())
12 # time.struct_time(tm_year=2016, tm_mon=10, tm_mday=26, tm_hour=16, tm_min=45, tm_sec=8, tm_wday=2, tm_yday=300, tm_isdst=0)
13 
14 # timestamp to struct_time 格林威治时间
15 time.gmtime()
16 time.gmtime(time.time())
17 # time.struct_time(tm_year=2016, tm_mon=10, tm_mday=26, tm_hour=8, tm_min=45, tm_sec=8, tm_wday=2, tm_yday=300, tm_isdst=0)
18 
19 #format_time to struct_time
20 time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')
21 # time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
22 
23 #生成format_time
24 #struct_time to format_time
25 time.strftime("%Y-%m-%d %X")
26 time.strftime("%Y-%m-%d %X",time.localtime())
27 # 2016-10-26 16:48:41
28 
29 
30 #生成固定格式的时间表示格式
31 time.asctime(time.localtime())
32 time.ctime(time.time())
33 # Wed Oct 26 16:45:08 2016

 

posted @ 2017-08-22 15:43  爱锁屏  阅读(220)  评论(0编辑  收藏  举报