1、包和模块
1.1 什么是模块
1.2 什么是包
2、常用模块
2.1 time模块
2.2 random模块
2.3 OS模块
2.4 Json模块
1.1 模块
if __name__ == '__main__':
pass
name是python内置变量,存储的当前模块名称,在导入模块的时候,每个模块都有他自己的模块名称,main相当于定义了一个主函数,如果不把所有函数放在一个程序中,就需要有一个主函数if name == 'main'代表如果现在的模块在main这个函数中,即程序入口。
1.2 包
含义:
当一个文件模块越来越多,包是对相关功能py文件组织方式,相当于文件夹,包的内部必须包括一个__init__文件
导入种类:
import 包名
from 包名 import 模块名
from 包名.模块名 import 成员名
from p2 import cal # 从p2文件夹中导入cal.py模块
from p2.cal import add # 从p2文件夹的cal.py模块导入add函数
cal.add() # 导入后的用法
2.1 time模块
*- 时间戳,时间偏移量,可以计算程序运行时间差
t1 = time.time()
for num in range(100000):
num += 1
print(num)
t2 = time.time()
print(t2-t1)
*- 格式化时间字符串
time.strftime("%Y-%m-%d %w %X")
time.strftime("%Y-%m-%d %w %X",time.localtime())
time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(os.path.getatime("D:\Python学习")))
*- 时间转换
time.strptime("2017-03-02","%Y-%m-%d")
*- 程序暂停
time.sleep(3)
2.2 random模块
import random
random.random() # 0-1之间的小数
random.randint(1,10) # 1-10之间的证书
random.randrange(1,10) # 大于等于1其小于10的整数
random.randrange(0,100,2) # 从0-100选择偶数
random.choice([1,"23",[4,5],2]) # 内容随意的一个
random.sample('abceww11',3) # 随机从被选组内选取3个字符
random.sample([1,"23",[4,5],3],2) # 内容随意的两个组合
random.uniform(1,3) # 大于1小于3的小数
item = [1,2,3,4,5]
random.shuffle(item) # 打乱次序
2.3 os模块
import os
os.getcwd() # 得到当前python工作的路径
os.chdir("dirname") # 修改当前工作路径
os.cutdir # 返回当前路径
os.pardir # 获取当前目录父目录字符串名称
os.makedirs('a/b/c/s') # 创建多级目录,多个层级的目录
os.removedirs(r'a/b/c/s') # 删除整个目录
os.mkdir('dirname') # 生成单级目录
os.rmdir('dirname') # 删除单级目录,但是文件必须是空
os.listdir() # 返回当前目录下的所有文件和文件名,for循环打开每一个
*- 路径和文件检验
os.path.isdir("D:\Python学习") # 检验是否是一个文件夹:True
os.path.isfile("mode_test.py") # 检验是否是一个文件:False
os.path.isabs("D:\Python学习") # 检验是否是绝对路径:True
os.path.exists("mode_test.py") # 检验该路径是否存在:False
*- 路径名称获取
os.path.split('a/b/c/s') # 相对路径转化为绝对路径:('a/b/c', 's')
os.path.dirname("a/b/c/s") # 获取路径名的前面内容:'a/b/c'
os.path.basename("a/b/c/s") # 获取文件名:'s'
*- 路径转化和修改时间获取
os.path.abspath('p2') # 相对路径转化为绝对路径:'D:\Python学习\jupyter\03爬虫学习\p2'
os.join(path)
os.path.getatime("D:\Python学习") # 该路径的文件最后访问时间:time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(os.path.getatime("D:\Python学习")))
os.path.getmtime("D:\Python学习") # 该路径的文件最后修改时间:time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(os.path.getmtime("D:\Python学习")))
os.path.getsize('mode_test.py') # 获取文件的大小
os.stat('mode_test.py') # 获取该文件的属性
*- 删除和修改名字
os.system('') # 运行shell命令
os.remove("mode_test.py") # 删除当前目录下的指定文件
os.rename('old','new') # 文件改名
*- 文件相关操作
r: 只读模式
w: 只写模式,如果文件不存在新建一个文件写入,如果存在有内容清空再往里面写
a: 追加模式,如果文件不存在新建一个文件写入,如果存在就在后面追加
x: 如果文件存在就报错,如果文件不存在新建然后写入内容
b: 二进制模式,rb/wb/ab,通常用于读取图片、视频等内容,读写的时候是以bytes类型读写的,需要制定一个编码格式
+: 读写模式:
r+:读写模式,配合seek()和tell()可以实现更多操作
w+:读写之前都要清空,不建议使用
a+:永远只能在文件末尾追加,不要使用
f.read(size):
读取一定大小的数据,然后作为返回值或者字节对象返回,size是一个可选的数字类型的参数,用于指定读取的数据量
如果size小于0或者被忽略,则文件的所有内容都被读取
如果文件体积较大,不要使用read()模式读取,而是使用read(512)一次一d读
f.readline():
读取前n行,不能回头处理
f.readlines():
一行一行读取全部内容,将内容存进列表中,可以随意存取
2.4 json模块
a.序列化: 通过某种方式把数据结构或对象写入到磁盘文件中或通过网络传导其他节点的过程(对象字典、列表...——>文件)。
import json
dic = {
"name":"bobo",
"age":21,
"salary":20000,
"hobby":["sleep","read","play"]
}
data = json.dumps(dic) # 序列化,字典格式转化为json格式的字符串
with open('./json.txt','w') as f:
f.write(data) # 写入文件
b.反序列化: 把磁盘中对象或者把网络节点中传输的数据恢复为python的数据对象的过程(文件中数据读取到字典、列表中)。
with open('./json.txt','r') as f:
data = f.read() # 读取json格式的文件
dic = json.loads(data) # 把json格式的内容返回字典对象
dic
c.优点: 序列化最重要的是json序列化,json是一种轻量级的数据交换格式,采用完全独立与编程语言的文本格式来储存和表示数据;简洁清晰的层次结构易于及其解析和生成,有效提高网络传输效率。
-------------------------------
python | json
-------------------------------
dict | object
list,tuple | array
str | string
int,float | number
True | true
False | false
None | null
-------------------------------
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。