梦想一步登天

导航

python模块学习

=========================time模块===============================
作用:打印日期,做时间转换。

import time
import datetime

#示例一:sleep()
print("start to sleep.....")
time.sleep(5) #让程序停止5秒
print("wake up...")

#示例二:时间戳
print(time.time()) #返回当前系统时间戳

#示例三:输出当前系统时间
print(time.ctime()) #输出当前系统时间

#示例四:将时间戳转为字符串格式
print(time.ctime(time.time()-86400)) #将时间戳转为字符串格式

#示例五:将时间戳转换成struct_time格式
print(time.gmtime(time.time()-86400))

#示例六:将时间戳转换成struct_time格式,但返回本地时间
print(time.localtime(time.time()-86400))

#示例七:与time.localtime()功能相反,将struct_time格式转换成时间戳格式
print(time.mktime(time.localtime()))

#示例八:将struct_time格式转换成指定的字符串格式
print(time.srtftime("%Y-%m-%d %H:%M:%S", time.gmtime()))

#示例九:将字符串格式转换成struct_time格式
print(time.strptime("2019-10-01", "%Y-%m-%d"))

 

========================datetime模块===========================
#示例一:输出今天的日期
datetime.date.today()

#示例二:将时间戳转成日期格式
datetime.date.fromtimestamp(time.time()-86400)

#示例三:
current_time = datetime.datetime.now()
print(current_time) #输出%Y-%m-%d %H:%M:%S格式,输出结果:2019-10-04 16:35:44.065723
print(current_time.timetuple()) #返回struct_time格式
print(current_time.replace(2019,10,04)) #输出%Y-%m-%d %H:%M:%S格式,返回当前时间,但指定的值将被替换。

#示例四:将字符串转换成日期格式
str_to_date = datetime.datetime.strptime("04/10/19 16:25", "%d/%m/%y %H:%M")

#示例五:比现在加10天
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)

#示例八:比现在加120秒
new _date = datetime.datetime.now() + datetime.timedelta(seconds = 120)

 

=========================sys模块==============================
import os
import sys

#示例一:命令行参数list,第一个元素是程序本身路径
sys.argv

#示例二:退出程序,正常退出时exit(0)
sys.exit(n)

#示例三:获取int最大值。
sys.maxint

#示例五:返回模块的搜索路径,初始化使用PYTHONPATH环境变量的值
sys.path

#示例六:返回操作系统平台名称
sys.platform

#示例七:向屏幕上显示信息
sys.stdout.write('hello')

#示例八:读取屏幕的输入
val = sys.stdin.readline()[:-1]

 

练习一:读写用户的输入,根据用户输入创建一个相应的目录。

1 import sys, os
2 dirname = input("请输入你的目录名称: ")
3 ret = os.mkdir(dirname)
View Code

 

练习二:模拟进度条的显示

1 import sys, time
2 
3 for i in range(31):
4     sys.stdout.write('\r') #每一次清空原行
5     sys.stdout.write("%s%% | %s" % (int(i/30*100), int(i/30*100) * '#'))
6     sys.stdout.flush() #强制刷新到屏幕
7     time.sleep(0.2) #控制输出的速度
View Code

进度条显示的结果:

 

===========================os模块==============================
示例七:获取当前工作目录,即当前python脚本工作的目录路径
os.getcwd()

#示例八:改变当前脚本工作目录,相当于shell下cd
os.chdir()

#示例九:返回当前目录('.')
os.curdir()

#示例十:获取当前目录的父目录字符串名('..')
os.pardir()

#示例十一:可生成多层递归目录
os.makedirs('dirname1/dirname2')

#示例十二:若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.removedirs('dirname1')

#示例十三:生成单级目录,相当于shell下mkdir
os.mkdir('dirname1')

#示例十四:删除单级目录,若目录不为空则无法删除,报错;相当于shell下rmdir
os.rmdir('dirname')

#示例十五:列出指定目录下的所有文件和子目录,包含隐藏文件,并以列表的方式打印
os.listdir('dirname')

#示例十六:删除一个文件
os.remove()

#示例十七:重命名文件或目录
os.rename("oldname", "newname")

#示例十八:获取文件或目录信息
os.stat('path/filename')

#示例十九:输出操作系统特定的路径分隔符,windows下为"\\",Linux下为"/"
os.sep

#示例二十:输出当前平台使用的行终止符,windows下为"\t\n",Linux下为"\n"
os.linesep

#示例二十一:输出用于分割文件路径的字符串
os.pathsep

#示例二十二:输出字符串指示当前使用平台,windows下为"nt",Linux下为"posix"
os.name

#示例二十三:运行shell命令,直接显示
os.system("bash command")

#示例二十四:获取系统环境变量
os.environ

#示例二十五:返回path规范化的绝对路径
os.path.abspath(path)

 

============================pickle模块--序列化===============================

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle模块只能在Python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,

pickle序列化后的数据,可读性差,人一般无法识别。

pickle.dump(obj, file[, protocol])
  序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中

pickle.load(file)
  反序列化对象。将文件中的数据解析为一个Python对象。

其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错。

pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回。


pickle模块可能出现三种异常:

1. PickleError:封装和拆封时出现的异常类,继承自Exception

2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError

3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError

示例一:dumps功能
import pickle
data = ['aa', 'bb', 'cc']
# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str)
#结果为:
b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.

#示例二:loads功能

# loads 将pickle数据转换为python的数据结构
mes = pickle.loads(p_str)
print(mes)
['aa', 'bb', 'cc']

示例三: dump功能
# dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
with open('D:/tmp.txt', 'w') as f:
pickle.dump(data, f)

示例四: load功能
# load 从数据文件中读取数据,并转换为python的数据结构
with open('D:/tmp.txt', 'r') as f:
data = pickle.load(f)

============================json模块--反序列化==================================

Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据。

josn.loads()用于将字典、列表、元组形式的字符串,装换成相应的字典、列表、元组。

示例:

1 import josn
2     
3 str = '{"desc": "invilad-citykey", "status": 1002}'
4 result = josn.loads(str)
5 print(result)
View Code

 

1、json字符串转为python基本数据类型

json.load / json.loads

两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,

json.loads接受的输入是json字符串,而非文件对象。从输入类型的区别也可以看出两者的使用场合。

可选参数包括是否需要转换整型、浮点型等数值的参数,还有一些复杂的功能,暂时没有用到,以后有机会再了解。

 

2、python基本数据类型转换为字符串

json.dump / json.dumps

对应于load和loads,dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同

===================python模块知识拾遗===============================

 

__doc__ : py文件的注释

__file__ :本身自己文件的路径
__package__ :导入的其他文件:指定所在的包,用"."分隔; 当前文件是None
__cached__ : 缓存
__name__ :如果是主文件, __name__ == "__main__",否则,等于模块名

 

注意:
1、主文件
  调用主函数前,必须加if __name__ == "__main__":
2、__file__

 

  将bin文件夹下的路径添加到os.path,使用当前的主文件能直接使用import t3导入t3.py文件

1 import os, sys
2 print(__file__) #获取当前文件的所在路径
3 p1 =os.path.dirname(__file__) #获取文件的上级目录路径
4 p2 = "bin"
5 new_path = os.path.join(p1, p2)
6 print(new_path)
7 sys.path.append(new_path)
View Code

 

 

 

 

posted on 2019-10-04 22:58  梦想一步登天  阅读(305)  评论(0编辑  收藏  举报