• 基本用法: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 )
  • 相关阅读:
    慎重使用MySQL auto_increment
    Java Tread多线程(0)一个简单的多线程实例
    Nubia Z5S 官方4.4 201内測版 内核版本号信息
    “cvSnakeImage”: 找不到标识符
    raid5什么意思?怎样做raid5?raid5 几块硬盘?
    Quartz CronTrigger运用
    php zip文件内容比較类
    UVA 1069
    Eclipse启动Tomcat时,45秒超时解决方案
    簡單SQL存儲過程實例
  • 原文地址:https://www.cnblogs.com/lj-attitudes0303/p/10354663.html
Copyright © 2020-2023  润新知