一 常用模块
python标准库
https://docs.python.org/3/py-modindex.html
1.1 sys
import sys
print(sys.modules)
获取当前程序中引入的所有模块
pprint模块==》pprint()
import sys
import pprint
pprint.pprint(sys.modules)
sys.path
import sys
import pprint
pprint.pprint(sys.path)
作用:返回一个列表,列表中保存的是模块的搜索路径
sys.exit()
import sys
print('hello world')
sys.exit()
print('hello world')
hello world
sys.exit('附加消息')
print('hello world')
sys.exit('过年了,下班了')
1.2 os
用python执行cmd命令
os.system
import os
os.system('echo hello world')
os.getcwd() # 获取当前python的工作目录
os.system('echo hello world')
print(os.getcwd())
os.mkdir('初雪') # 创建文件夹,括号里面写文件名
os.rmdir('初雪') # 删除文件夹,只能删除空的
os.remove('aaa.py') # 删除文件
os.rename('aaa.py','bbb.py') # 重命名,有两个参数第一个是原名,第二个是新名
print(os.path.exists(path='bbb.py')) # 判断文件是否存在
print(os.path.isfile(path='bbb.py')) # 判断是否为文件
1.3 time
import time
print(time.time())
print(time.localtime())
1665406023.174183
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=10, tm_hour=20, tm_min=47, tm_sec=3, tm_wday=0, tm_yday=283, tm_isdst=0)
while 1:
time.sleep(1) # 休眠一秒钟
print('helloworld')
time.strftime() 有两个参数,第一个参数是格式,第二个参数是要转换的时间
localtime()转换格式:
%Y 年
%m 月
%d 日
%H 时
%M 分
%S 秒
print(time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))
2022/10/10 21:02:28
1.4 random
import random
需要导包
生成一个大于0,小于1的随机数
a = random.random()
print(a)
左闭右闭区间
random.randint(start,end)
start==> 起点
end==> 终点
b = random.randint(1,100) # 在1-100之间随机一个整数
print(b)
随机生成元素
c = random.choice(['石头','剪刀','布']) # 随机生成元素
print(c)
随机生成多个元素,参数大于指定的列表元素数量也不会报错
c = random.choices(['石头','剪刀','布'],k=2) # 随机生成元素
print(c)
随机生成指定范围的小数
d = random.uniform(1,10)
print(d)
打乱序列类型的顺序
li = [1,2,3,4,5,6,7,8,9,0]
random.shuffle(li)
print(li)
不可变类型不可以被打乱顺序
s = 'hello world'
random.shuffle(s)
print(s)
4位数字的随机验证码
def yzm():
验证码 = ''
for i in range(4):
验证码 += str(random.randint(1,9))
return 验证码
print(yzm())
1.5 json
json是一种兼容性很强的文件格式
json是文件的存储形式
跨语言跨平台
序列数据:机器码(底层0和1)
反序列数据:程序员写的看的代码
import json
json_data = json.dumps([1,2,'左手'])
print(json_data)
[1, 2, "\u5de6\u624b"] # 把中文序列化了
序列化之后它存储的是一个字符串类型
json_data = json.dumps([1,2,'左手'])
print(json_data)
print(type(json_data))
data = json.loads(json_data) #反序列化
print(data)
print(type(data))
[1, 2, "\u5de6\u624b"]
<class 'str'>
[1, 2, '左手']
<class 'list'>
二 文件操作
操作文件步骤:
1.打开文件
2.对文件进行操作(读,写),保存
3.关闭文件
1.1 打开
菜鸟教程
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file: 要打开文件的名字(或者说是路径)
filename = 'demo2.txt'
open(filename)
filename = 'demo2.txt'
demo = open(filename)
print(demo)
<_io.TextIOWrapper name='demo2.txt' mode='r' encoding='cp936'>
python的绝对路径快捷键:ctrl + shift +c
.. 表示上一级
相对路径:../demo/demo2.txt
在路径前面加一个r作用是规避转义
r'../demo/demo2.txt'
1.2 关闭
demo.close() 调用关闭方法close()
with open ... as 语句
filename = r'demo2.txt'
demo = open(filename)
content = demo.read()
print(content)
print(type(content))
with open(filename) as f:
print(f.read())
# print(f.read) 报错
注意f只能在with当中使用,with结束了就自动close关闭掉了
1.3 读取
我们在调用open()来打开文件的时候可以将文件分为两类
1.纯文本文件(使用utf-8等编码编写的文本文件)
2.二进制文件(音乐、视频)
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
content = f.read()
print(content)
read有个参数,用来指定要读取的字符数量,默认值为-1就是读取文件中所有的字符
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
content = f.read(4)
content = f.read(4)
print(content)
跟着上次读完的继续读4个字符
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
content = f.read(4)
content = f.read(4)
content = f.read(4)
content = f.read(4)
print(content)
如果最后一个读完了,就会返回一个空字符串
#读取大文件的方式
with open(filename,encoding='utf-8') as f:
#定义变量,指定每次读取的大小
c = 3
#创建循环读取文件内容
while 1:
#读取指定大小的内容
content = f.read(c)
#检测内容是否为空
if content == '':
#读取完毕,退出循环
break
print(content,end='')
或者:
#读取大文件的方式
with open(filename,encoding='utf-8') as f:
#用空字符串来存放
all_content = ''
#定义变量,指定每次读取的大小
c = 3
#创建循环读取文件内容
while 1:
#读取指定大小的内容
content = f.read(c)
#检测内容是否为空
if content == '':
#读取完毕,退出循环
break
#用all_content拼接content
all_content += content
print(content,end='')
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
print(f.readline()) # 读取一行内容
print(f.readline())
print(f.readline())
print(f.readline())
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
print(f.readlines()) # 一行一行的读取内容,一次性读完存到列表
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
l = f.readlines()
print(l[1:3])
['世界\n', '我是\n']
1.4 写入
write()
filename = r'demo4.txt'
with open(filename,encoding = 'utf-8')as f:
f.write('吴彦祖宝强王博李小芳') #报错
r:只读
w:只写 ,会默认覆盖文件,如果文件不存在就会创建文件
a:表示追加
filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
f.write('西门庆武松番茄略略略蔡徐坤')
filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
f.write('西门庆武松番茄略略略蔡徐坤\n')
f.write('hello\n')
f.write('hello\n')
f.write('1')
write()也有返回值,返回值是写入字符串的长度
filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
a = f.write('python')
print(a)
追加
filename = r'demo4.txt'
with open(filename,'a',encoding = 'utf-8')as f:
f.write('你好世界')
f.write('我是左手')
附加功能:
+:为操作符增加功能
r+:可读可写,文件不存在会报错
w+:可写也可读
a+:可写也可读
1.5 二进制文件
所有的文本文件之外的文件统一叫做二进制文件
b 读取二进制文件
读取二进制文件你就在模式后面加个b
filename = r'C:\Users\18361\Desktop\h3R3 - 忘不掉的你.mp3'
with open(filename,'rb')as f:
#新的文件名
new_path = 'qq.mp3'
with open(new_path,'ab')as new_f:
#定义每次读取的大小
c = 1024*100 #二进制模式,基本单位不是字符是字节,1kb=1024byte 1mb=1024kb
while True:
content = f.read(c)
if not content:
break
#将读取到的数据写入到新对象中
new_f.write(content)