模块的概念:一个Python文件就是一个模块
模块大体分为三类:
1.Python自带的标准模块
2.第三方模块,需要安装,提供扩展功能
3.自己写的Python文件
下面先讲下Python自带的三个常用模块
一、常用模块--Json模块
Json是字符串,只是形似字典, Python的写法中,字典的key值一般引用单引号' ',而Json中都是引用双引号" '',
Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据
1. 把Json字符串转为字典 -- json.loads( )和json.load()
json.loads(),第一个入参是Json字符串,例:
import json
json_str='''
{"name":"xiaohei","age":18,"sex":"男","age":18}
'''
res=json.loads(json_str)#把字符串转为字典
print(res)
print(type(json_str))
print(type(res))
输出结果:
{'name': 'xiaohei', 'age': 18, 'sex': '男'}
<class 'str'>
<class 'dict'>
json.load(),第一个入参是包含Json数据的文件对象
f=open("user.json",encoding="utf-8")
res=json.loads(f.read())
print(res)
res=json.load(f)
print(res)
两种方法最终实现的效果是一样的。
2. 字典转换为json--json.dumps( )和json.dump()
json.dumps()的第一个参数是对象字典,还有其他可选参数,也很实用。
ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文
或其他非ascii字符,可以将ensure_ascii设置为False,保证输出结果正常。
indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进。例:
dic = {
"xiaohei":{
"age":18,
"password":12345,
"sex":"男",
"addr":"北京"
},
"马春波":{
"age":18,
"password":12345,
"sex":"男",
"addr":"北京"
},
"王东泽":{
"age":18,
"password":12345,
"sex":"男",
"addr":"北京"
},
}
res=json.dumps(dic,ensure_ascii=False,indent=4)#把字典变成字符串
print(res)
f=open("a.json","w",encoding="utf-8")
f.write(res) #写入文件的时候,如果是.json文件,会显示出json字体颜色等
json.dump()的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,其他可选参数与
dumps相同。例:
fw=open("newuser.json","w")
json.dump(dict,fw,ensure_ascii=False,indent=4)
二、 常用模块--os模块
1. os.listdir(path)—— 列出某个目录下所有文件,返回列表
os.getcwd()—— 获取当前目录
2. os.mkdir(r'test/niuhy/haha')——创建路径中的最后一级目录,如果父目录不存在,会报错
os.makedirs(r"test1/lyl/aaa")——创建多层目录,如果父目录不存在,可以创建父目录
3. os.path.isfile()——判断指定对象是否为文件。是返回True,否则False
os.path.isdir()——判断指定对象是否为目录。是True,否则False。
4. os.path.exists(path) —— path存在,返回True。不存在,返回false
5. os.path.split(path)——将路径分解为(文件夹,文件名),返回元组
以路径字符串最后一个分隔字符"\"进行分割,若路径字符串最后一个字符是\,则只有文件夹部分有值;若路径字符串中均无\,
则只有文件名部分有值。若路径字符串有\,且不在最后,则文件夹和文件名均有值。返回的文件夹的结果不包含\.
例:
res=os.path.split('/Users/nhy/Desktop/stu.txt')
print(res)
输出结果:
('/Users/nhy/Desktop', 'stu.txt')
os.path.join(path1,path2,...)——自动拼接路径,将path进行组合,不用考虑分割符,若其中有绝对路径,则之前的path
将被删除
例1:
res=os.path.join("test","HAHA","a.txt")
print(res)
输出结果:
‘test\HAHA\a.txt’
例2:
res= os.path.join('D:\python\b', 'D:\pythontest\a')
print(res)
输出结果:
'D:\pythontest\a'
6. os.path.dirname(path)——返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)——返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)
的第二个元素
7. os.chdr()——更改当前目录
os.chdr('../day4)按相对路径更改
os.chdr('/Users/nhy/Desktop')按绝对路径更改
8. os.path.abspath(path)——返回标准化的绝对路径
res= os.path.abspath('..')#根据相对路径取绝对路径
print(res)
9.os.environ——查看电脑的环境变量
10. os.system('hhhsdf')——执行操作系统命令
三、常用模块--time模块
时间戳:从计算机诞生开始按秒计算
格式化时间:YYYY-MM-DD或YYYYMMDD等
时间元组:time.struct_time(tm_year=2018, tm_mon=12, tm_mday=4, tm_hour=17, tm_min=16, tm_sec=41,
tm_wday=1,tm_yday=338, tm_isdst=0)
1. time.time()——取时间戳
2 .time.gmtime([secs])——接收时间戳,转化为时间元组,按标准时间转换。不输入参数时默认取当前时间的时间戳。
time.localtime([secs])——接收时间戳,转化为时间元组,按当地时间转换。不输入参数时默认取当前时间的时间戳。
3 .time.strftime(format[,t])——把时间元组转换为格式化的时间,t不指定时,默认传入time.locatime()
time.strptime(string[,format])——把格式化时间转化为时间元组
两者实际是逆操作
4. time.mktime(t) —— 接收时间元组,转化为时间戳
定义一个函数,把时间戳转为格式化时间:
def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
#时间戳转格式化好的时间
if timestamp:
time1 = time.localtime(timestamp)
res = time.strftime(format, time1)
else:
res = time.strftime(format)
return res
定义一个函数,把格式化时间转为时间戳:
def strTotimestamp(str=None,format='%Y%m%d%H%M%S'):
#格式化的时间转时间戳
if str:
timep = time.strptime(str, format)
res = time.mktime(timep)
else:
res = time.time()
return int(res)