模块

模块

模块,用一砣代码实现了某个功能的代码集合。

模块分为三种:

1)自定义模块

2)内置模块

3)开源模块(第三方模块)

模块的导入:

导入模块时是根据那个路径进行的

1 from lib.account import login  #from 文件路径 import 模块  #在哪导入模块

2 import login

导入模块就是告诉python解释器去解释py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

查看模块路径;导入模块路径

示例:

import sys
for i in sys.path: #查看路径
    print(i)



import sys
sys.path.append("D:")  #导入模块的路径
for i in sys.path:
    print(i)

 安装模块:

1)软件管理工具安装(pip3)

  pip3路径添加到环境变量     pip3路径: C:....python35Scripts

  pip3 install requests

2)源码安装

  下载代码,安装:

  1,先下载     https://github.com/kennethreitz/requests/tarball/master

  2,解压

  3,进入目录

  4,执行python setup.py install

内置模块

time模块

时间戳  1970年1月1日

格式化的字符串

结构化时间  

 1 import time
 2 
 3 print(time.time())  #输出1463671696.212329 返回当前系统时间戳
 4 print(time.ctime()) #输出Thu May 19 22:52:20 2016  当前系统时间
 5 print(time.ctime(time.time() - 86400)) #输出Wed May 18 22:54:23 2016 过去一天的当前时间
 6 print(time.gmtime(time.time() - 86400)) #将时间戳转换成struct_time格式
 7 print(time.process_time())  # 0.0780005输出返回处理器时间
 8 print(time.localtime(time.time() - 86400)) #将时间戳转换成struct_time格式,但返回本地时间
 9 print(time.mktime(time.localtime())) #输出1463671089.0 与time.localtime()功能相反,将struct_time格式转回成时间戳格式
10 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())) #输出2016-05-19 15:24:08 将struct_time格式转成指定的字符串格式
11 print(time.strptime("2016-05-19","%Y-%m-%d") ) #将字符串格式转换成struct_time格式
12 
13 import datetime
14 
15 print(datetime.date.today())  #输出2016-05-19
16 
17 print(datetime.date.fromtimestamp(time.time() - 86400)) #输出2016-05-18 过去一天
18 
19 current_time = datetime.datetime.now()
20 print(current_time)  #输出2016-05-19 23:50:12.064591
21 
22 print(current_time.timetuple())  #返回struct_time格式
23 
24 
25 print(current_time.replace(2015,9,1)) #输出2015-09-01 00:13:09.001347 返回当前时间,但指定的值将被替换
26 
27 str_to_date = datetime.datetime.strptime("20/05/16 0:06", "%d/%m/%y %H:%M") #将字符串转换成日期格式
28 print(str_to_date) #输出2016-05-20 00:06:00
29 
30 new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天
31 print(new_date) #输出2016-05-30 00:13:09.042349
32 
33 new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天
34 print(new_date) #输出2016-05-10 00:13:09.042349
35 
36 new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时
37 print(new_date) #输出2016-05-19 14:13:09.042349
38 
39 new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s
40 print(new_date) #输出2016-05-20 00:15:09.042349
View Code

 相互转换:

sys模块

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

 进度条:

例一: 
1
import time 2 import sys 3 4 for i in range(101): 5 #显示进度条百分比 #号从1开始 空格从99递减 6 hashes = '#' * int(i / 100.0 * 100) 7 spaces = ' ' * (100 - len(hashes)) 8 sys.stdout.write(" [%s] %d%%" % (hashes + spaces, i)) 9 sys.stdout.flush() 10 time.sleep(0.05) 11 12 13 14 15 例二: 16 import sys,time 17 18 for i in range(31): 19 sys.stdout.write(' ') #每一次清空原行 20 sys.stdout.write("%s%% |%s" % (int(i/30*100), int(i/30*100)*'*')) 21 sys.stdout.flush() #强行刷新到屏幕 22 time.sleep(0.2)

 序列化

json 和 pickle

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

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

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

 1 import pickle
 2 data = {'k1':'123','k2':'hello'}
 3 
 4 #pickle.dumps 将数据通过特殊的形式转化为只有python语言认识的字符串
 5 m = pickle.dumps(data)
 6 print(m)
 7 
 8 ##pickle.dump 将数据通过特殊的形式转化为只有python语言认识的字符串,并写入文件
 9 with open('D:/result.pk','w') as fp:
10     pickle.dump(data,fp)
11 
12 import json
13 #json.dumps 将数据通过特殊的形式转化为所有程序语言都认识的字符串
14 n = json.dumps(data)
15 print(n)
16 
17 #json.dump 将数据通过特殊的形式转化为所有程序语言都认识的字符串,并写入文件
18 with open('D:/result.json','w') as fp:
19     json.dump(data,fp)

 pickle实例:

 1 购物金额操作
 2 #**************
 3 import pickle
 4 
 5 accounts = {
 6     1000: {
 7         'name':'Alex LI',
 8         'email': 'lijie3721@126.com',
 9         'passwd': 'abc123',
10         'balance': 15000,
11         'phone': 13651054608,
12         'bank_acc':{
13             'ICBC':14324234,
14             'CBC' : 235234,
15             'ABC' : 35235423
16         }
17     },
18     1001: {
19         'name': 'CaiXin Guo',
20         'email': 'caixin@126.com',
21         'passwd': 'abc145323',
22         'balance': -15000,
23         'phone': 1345635345,
24         'bank_acc': {
25             'ICBC': 4334343,
26         }
27     },
28 }
29 
30 # print(accounts)
31 #第一步
32 f = open('accounts.db','wb')
33 f.write(pickle.dumps(accounts))
34 f.close()
35 
36 
37 #**************
38 import pickle
39 
40 #第二步
41 acc_file_name = "accounts.db"
42 
43 account_file = open(acc_file_name,'rb')
44 
45 account_dic = pickle.loads(account_file.read())
46 
47 account_file.close()
48 print(account_dic)
49 
50 account_dic[1000]['balance'] -= 500
51 
52 f = open(acc_file_name,'wb')
53 f.write(pickle.dumps(account_dic))
54 f.close()
55 print(account_dic)
56 
57 
58 #********************
59 import pickle
60 #第三步
61 f = open("accounts.db",'rb')
62 
63 account_db = pickle.loads(f.read())
64 print(account_db)
View Code

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下为"	
",Linux下为"
"
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所指向的文件或者目录的最后修改时间

重点掌握的:

1 os.stat('path/filename')  获取文件/目录信息
2 
3 os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
4 
5 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
6 
7 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

hashlib模块

加密相关操作

1 import hashlib
2 
3 hash = hashlib.md5(bytes('hjffhash347d2h3s',encoding='utf-8'))
4 hash.update(bytes('888000',encoding='utf-8'))
5 print(hash.hexdigest())

实例:

mb5加密

 1 import hashlib
 2 def md5(arg):
 3     ooo = hash = hashlib.md5(bytes('hjffhash347d2h3s',encoding='utf-8'))
 4     ooo.update(bytes(arg,encoding='utf-8'))
 5     return ooo.hexdigest()
 6 def login(user,pwd):
 7     with open("db",'r',encoding="utf-8") as f:
 8         for line in f:
 9             u, p = line.strip().split("|")
10             if u == user and p == md5(pwd):
11                 return True
12 def register(user,pwd):
13     with open("db",'a',encoding="utf-8")as f:
14         temp =user + "|" + md5(pwd)
15         f.write(temp)
16 
17 i = input("1,登录;2,注册")
18 if i== "2":
19     user = input("用户名:")
20     pwd = input("密码:")
21     r = login(user, pwd)
22     if r:
23         print("登录成功")
24     else:
25         print("登录失败")
View Code

详细参考:http://www.cnblogs.com/wupeiqi/articles/4963027.html

原文地址:https://www.cnblogs.com/kongqi816-boke/p/5510706.html