python常用模块学习
补充:字符串的格式化
print("%s-%s-%s" % (tm_obj.tm_year,tm_obj.tm_mon,tm_obj.tm_mday))
输出就是2017-10-29
time模块
sys模块
C:\\python2.7\\lib\\site-packages 存放所有的第三方库
datatime模块
pickle 模块
模块介绍:
Python Module(模块),就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。
文件名就是模块名加上后缀.py,在模块内部,模块名存储在全局变量__name__中,是一个string,可以直接在module中通过__name__引用到module name。
模块分为三种:
- 自定义模块
- 内置标准模块(又称标准库)
- 开源模块
导入模块:
- import: 使客户端(导入者)以一个整体获取一个模块。
- from:容许客户端从一个模块文件中获取特定的变量名。
- reload:在不中止Python程序的情况下,提供了一个重新载入模块文件代码的方法。
import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import *
模块路径:
#获取路径 import sys for i in sys.path: print(i) #输出结果: S:\Myproject S:\Python 3.5.1\python35.zip S:\Python 3.5.1\DLLs S:\Python 3.5.1\lib #存放标准库 S:\Python 3.5.1 S:\Python 3.5.1\lib\site-packages #存放第三方库,扩充库 #添加路径 import sys import os pre_path = os.path.abspath('../') sys.path.append(pre_path)
开源模块:
#先安装 gcc 编译和 python 开发环境 yum install gcc yum install python-devel 或 apt-get python-dev #安装方式(安装成功后,模块会自动安装到 sys.path 中的某个目录中) yum pip apt-get ... #进入python环境,导入模块检查是否安装成功
time & datetime 模块
时间相关的操作,时间有三种表示方式:
- 时间戳 1970年1月1日之后的秒,即:time.time()
- 格式化的字符串 2014-11-11 11:11, 即:time.strftime('%Y-%m-%d')
- 结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
import time print(time.time()) #返回当前系统时间戳(1970年1月1日0时0分0秒开始) print(time.ctime()) #输出Tue May 17 16:07:11 2016,当前系统时间 print(time.ctime(time.time() - 86400)) #将时间戳转换为字符串格式 print(time.gmtime(time.time() - 86400)) #将时间戳转换为struct_time格式 print(time.localtime(time.time() - 86400)) #将时间戳转换为struct_time格式,返回本地时间 print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式 #time.sleep(5) #sleep停顿 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())) #将struct_time格式转成指定的字符串格式 print(time.strptime("2016-05-17","%Y-%m-%d")) #将字符串格式转换成struct_time格式 print("----------------------------------------------------------------") import datetime print(datetime.date.today()) #输出格式 2016-05-17 print(datetime.date.fromtimestamp(time.time() - 86400)) #2016-05-16 将时间戳转成日期格式 current_time = datetime.datetime.now() print(current_time) #输出2016-05-17 16:18:28.737561 print(current_time.timetuple()) #返回struct_time格式 print(current_time.replace(2008,8,8)) #输出2008-08-08 16:21:34.798203,返回当前时间,但指定的值将被替换 str_to_date = datetime.datetime.strptime("28/7/08 11:20","%d/%m/%y %H:%M") #将字符串转换成日期格式 new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天 new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天 new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时 new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s print(new_date)
sys模块
-
-
sys.argv 命令行参数List,第一个元素是程序本身路径(命令行的参数
比如用python test.py arg1 arg2运行test.py代码
那么argv列表的内容是[' test.py','arg1','arg2']) sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdin 输入相关 sys.stdout 输出相关 sys.stderror 错误相关 -
# 手写进度条 import sys,time for ii in range(101): sys.stdout.write('\r') #每一次清空原行。 sys.stdout.write("%s%% |%s|"%(int(int(ii)/100*100),int(int(ii)/100*100) * '#')) #一共次数除当前次数算进度 sys.stdout.flush() #强制刷新到屏幕 time.sleep(0.05)
- 读写用户的输入,根据用户的输入创建一个相应的目录。
- import sys,os
- print(sys.argv[1])
-
json & picle 模块
-
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存 到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。
dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。
loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。
-
##### json.loads 将字符串转换为python基本数据类型 列表字典 ##### import json l = '["nick","jenny","car"]' print(l,type(l)) l = json.loads(l) print(l,type(l)) l = '{"k1":"nick","k2:":"jenny"}' print(l,type(l)) l = json.loads(l) print(l,type(l)) ##### json.dumps 将python的数据类型列表字典转换为字符串 ###### import json l = ["nick","jenny","car"] print(l,type(l)) l = json.dumps(l) print(l,type(l)) l = {"k1":"nick","k2:":"jenny"} print(l,type(l)) l = json.dumps(l) print(l,type(l)) ##### json dump、load 文件相关 ##### import json l = {"k1":"nick","k2:":"jenny"} json.dump(l,open('db','w')) ret = json.load(open('db')) print(ret)
购物车程序:
-
import pickle accounts = { 1000:{ 'name' = 'Alex Li' 'email' = '1231231@qq.com' 'passwd' = 'scac' 'balance' = 12345 'phone' = 1231235 } } f = open('account.db','wb') f.write(pickle.dumps(account)) f.close() #以下是shopping代码块 消费 import pickle acc_file_name = 'account.db' account_file = open(acc_file_name','rb') account_dic = pickle.loads(account_file.read()) account_file.close() account_dic[1000]['balance'] -= 500 f = open(acc_file_name,'wb') f.write(pickle.dumps(accunt_dic)) f.close() print(account_dic) #以下为checkout程序 import pickle f = open("account.db","rb") account_db = pickle.loads(f.read()) print(account_db)