基本用法:7《自学模块案例》

7 《自学模块案例》

1)【random模块】

 1 # 1.【random模块】
 2 import random  # 调用random模块
 3 a = random.random()  # 随机从0-1之间抽取一个小数
 4 b = random.randint(0,100)  # 随机从0-100之间抽取一个数字
 5 c = random.choice('abcdefg')     # 得到1个str,c=''
 6 # choice 随机从字符串/列表/字典等对象中抽取一个元素(可能会重复)
 7 d = random.sample('abcdefg', 3)  # 得到1个list[],d=[]
 8 # sample 随机从字符串/列表/字典等对象中抽取多个不重复的元素
 9 f = [1, 2, 3, 4, 5, 6]
10 random.shuffle(f)          # “随机洗牌”,比如打乱列表
11 print('
')

2)【csv模块 -Excel表格.csv-猫砂、收件人

 1 # 2.【csv模块 -Excel表格.csv】
 2 ## (1)猫砂
 3 import csv
 4 with open('sample/Excel.csv','r',newline='') as f:
 5     r=csv.reader(f)  # a按表格的行读取
 6     for i in r:
 7         print(i)
 8 ### 下面是读取内容:
 9 # ['商品编号', '商品名称', '单价', '库存', '销量']
10 # ['1', '猫零食', '12', '3313', '5164']
11 # ['2', '普通猫粮', '33', '5055', '2231']
12 # ['3', '猫粮四合', '187', '212', '334']
13 
14 ### 要存放2行
15 with open('sample/Excel.csv','a+', newline='') as f:
16  # with open('sample/Excel.csv','w+', newline='') as f:
17  # 写入方式w/a都可以,因为没有循环for
18     w=csv.writer(f)  # <class list>嵌套列表
19   # 按行写入
20     w.writerow(['4', '猫砂', '25', '1022', '886'])
21     w.writerow(['5', '猫罐头', '18', '2234', '3121'])
22 with open('sample/Excel.csv','r', newline='') as f:
23     h=csv.reader(f)  # <class list>嵌套列表
24     for i in h:
25         print(i)
26 
27 ## (2)写入、读取收件人
28 import csv
29 data=[['收件人','邮箱'],['','702352870@qq.com'],['','1427369427@qq.com']]
30 ## excel表格.csv文件写入要 列表嵌套
31 with open('sample/recipient.csv','w',newline='') as a:
32  # with open('sample/recipient.csv','a',newline='') as a:
33  # 如果是'a'则第一行就是空的??'w'就没有这个bug!!
34  # 因为有循环for,也算写入一行,没有输出就返回空行!!
35     b=csv.writer(a)  # 写入内容放入b
36     # 按行写入
37     for i in data:   # i=['收件人','邮箱']
38         b.writerow(i)
39 with open('sample/recipient.csv','r',newline='') as a:
40     c=csv.reader(a)  # 读取内容放入c
41     for i in c:
42         print(i)

3)【time模块 -时间戳】

 1 # 3.【time模块 -时间戳】
 2 import time
 3 input("欢迎使用“时间管理器”!请按enter继续")
 4 # 必须是input,不能是print,只要不按enter就一直等待
 5 with open('sample/time_record.txt','a') as f:
 6     task = input('你要做什么事情:')
 7     t = int(input('你要几分钟完成?1,2,3,4...:'))
 8     time.sleep(1)
 9     a=input('此次任务信息:
task:%s
time:%dmin
按enter开始计时'%(task,t))
10     f.writelines('此次任务信息:
task:%s
time:%dmin
'%(task,t))
11     if a =='':
12         print('计时开始(s):')
13     sta=time.time()         # 时间戳time.time(),1548730796.4549906
14     start_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(sta))
15           # 墙上时间time.strftime(time.localtime(time.time())),比如2019-1-29
16 ## time.localtime(sta)  # 当地时间time.localtime(time.time()),非正式格式,运行如下:
17 ## time.struct_time(tm_year=2019,tm_mon=1,tm_mday=29,tm_hour=10,tm_min=59,tm_sec=56,tm_wday=1,tm_yday=29,tm_isdst=0)
18     for x in range(60*t,-1,-1):
19         daojishi='倒计时'+str(x)+'s'
20         time.sleep(1)
21  ## 下面2行是输出一行,同时清理掉输出的内容:
22  ## print(daojishi,end='')
23  ## print('b'* (len(daojishi)*2) ,end='',flush=True)
24  ## 'b'是【退格功能】的转义字符,退格(len(daojishi)*2)次,
25  ##  因为中文字符占2byte,字母数字就不*2,flush=True开启缓冲区
26     print("叮咚,time's up!")                  # 规定时长
27     b=input('你完成任务了吗?完成请按enter:')
28     if b=='':
29         end=time.time()
30         end_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(end))
31         used_time=(end-sta)/60                   # 实际时长
32         time_range=start_time+'——'+end_time    # 2019-01-29 10:49:11——2019-01-29 10:49:35
33     record0='预计完成:'+str(t)+'min
实际用时:'+str(used_time)+'min'
34     record1='时间段:'+time_range
35     f.writelines(record0+'
'+record1)
36     print(record0+'
'+record1)
37 print('愿被你善待的时光,予你美好的回赠。')

4)【stmplib /email模块 + MIMEText/Header函数 -写发QQ邮件】

 

C. 发一封完整邮件

 

 1 ## 1. 发一封完整邮件
 2 import smtplib  # 按住ctrl+点击smtplib出现模块解释
 3 # (1)链接服务器
 4 a = smtplib.SMTP(host,port)      # 默认TSL加密方式
 5 a = smtplib.SMTP_SSL(host,port)  # 若端口是SSL加密,请这样写代码。
 6                 # host是目标邮件的【服务器地址】,port是【端口=整数】
 7 # 若编码错误UnicodeDecodeError,就酱写server.connect('smtp.qq.com',465,'utf-8')
 8 
 9 # (2)登录邮箱
10 a.login(account, password) # account:账户 password:授权码
11 
12 # (3)编译标题、正文、收件人,发件人昵称
13 from email.mime.text import MIMEText    # 纯文本正文内容
14 from email.mime.image import MIMEImage  # 图片
15 from email.mime.multipart import MIMEMultipart # 多形式组合
16 from email.header import Header         # 头部信息
17 
18 message=MIMEText(msg,type,chartset)
19 # msg:文本内容,a.text
20 # type:文本类型,默认为'plain'(纯文本)
21 # chartset:文本编码,中文“utf-8”
22 message['subject']=Header(subject,'utf-8')
23 message['from']=Header(sender,'utf-8')
24 message['to']=Header(to_addr,'utf-8')
25 
26 # (4)发送,退出
27 a.sendmail(sender,to_addr,message.as_string())
28 # from_addr:邮件发送地址,就是上面的username='xxx.qq@com'
29 # to_addr:邮件收件人地址,'yyy.qq@com'
30 # msg.as_string():为一个字符串类型
31 a.quit()

D. 发邮件【文件读写.txt.csv

 1 import smtplib,csv
 2 from email.mime.text import MIMEText
 3 from email.header import Header
 4 ### 1.链接服务器(地址+端口+加密方式)
 5 aaa=smtplib.SMTP_SSL('smtp.qq.com',465)
 6 
 7 ### 2.登录(.txt文件读取账户密码)
 8 with open('sample/QQ登录.txt','r') as a:
 9     b=a.readlines()     #['702352870@qq.com njzrpkumldghbfii 上好佳']
10     b=b[0].split(' ')  #['702352870@qq.com', 'njzrpkumldghbfii', '上好佳']
11 account=b[0]    # 702352870@qq.com
12 passwords=b[1]  # njzrpkumldghbfii
13 sender=b[2]     # 上好佳
14 aaa.login(account,passwords)
15 
16 ### 3.读取收件人、正文,并编辑好
17 ## (1)写入
18 data=[['name','qq','subject','text'],['','702352870@qq.com','今天','今天几号?'],['','1427369427@qq.com','明天','明天几号?']]
19 ## excel表格.csv文件写入要 列表嵌套
20 with open('sample/recipient.csv','w',newline='') as a:
21  # with open('sample/recipient.csv','a',newline='') as a:
22  # 如果是'a'则第一行就是空的??'w'就没有这个bug!!
23  # 因为有循环for,也算写入一行,没有输出就返回空行!!
24     b=csv.writer(a)  # 写入内容放入b
25     # 按行写入
26     for i in data:   # i=['收件人','邮箱']
27         b.writerow(i)
28 
29 ## (2)读取
30 recipient0=[]     # 表格第1列-收件人…
31 subject0=[]       # 表格第2列-标题…
32 text0 = []        # 表格第3列-内容…
33 with open('sample/recipient.csv','r',newline='') as a:
34     c=csv.reader(a)  # 读取内容放入c
35     for i in c:      # 按行读取
36         recipient0.append(i[1])  # 表格第1列-收件人…
37         subject0.append(i[2])    # 表格第2列-标题…
38         text0.append(i[3])       # 表格第3列-内容…
39 recipient=recipient0[1:]  # 1 收件人:['702352870@qq.com', '1427369427@qq.com']
40 subject=subject0[1:]      # 2 主题:['今天', '明天']
41 text=text0[1:]            # 3 正文:['今天几号?', '明天几号?']
42 
43 ### 4. 编辑发送,退出
44 try:
45     for i in range(len(text)):   # 容易丢range()
46         msg=MIMEText(text[i],'plain','utf-8')     # text
47         msg['subject']=Header(subject[i],'utf-8') # subject
48         msg['from']=Header(sender,'utf-8')       # from-account
49         msg['to']=Header(recipient[i],'utf-8')    # to-recipient
50         aaa.sendmail(account,recipient[i],msg.as_string())
51         print('发送成功!撒花~')
52 except:
53     print('发送失败,请检查程序后重试~~')
54 aaa.quit()

5)【MyQR模块=动态二维码】

 1 from MyQR import myqr
 2 # import os
 3 myqr.run(
 4     words='happy newyear',  # str类型,链接or句子作为参数,中文??
 5  # 扫描二维码后,显示的内容,或是跳转的链接
 6  # 输入中文字符串会报错,怎么解决??
 7  # ValueError: Wrong words! Make sure the characters are supported!
 8     version=1,       # 整型, from 1 to 40  二维码边长
 9     level='H',       # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
10     picture='1.gif',       # str, 二维码背景图{'.jpg', '.png', '.bmp', '.gif'}
11     colorized=True,        # bool  黑白(False)还是彩色(True) 背景图颜色
12     contrast=1.0,    # float 图片对比度和亮度,1.0表示原始图片
13     brightness=1.0,  # float 图片亮度
14     save_name='11.gif',    # str, 生成二维码文件名
15     save_dir='sample'  #str,输出路径
16     #save_dir=os.getcwd() #控制位置
17 )
原文地址:https://www.cnblogs.com/lj-attitudes0303/p/10354663.html