zoukankan      html  css  js  c++  java
  • PYDay6- 内置函数、验证码、文件操作、发送邮件函数

    1、内置函数

    1.1Python的内置函数

    abs() dict() help() min() setattr()
    all() dir() hex() next() slice()
    any() divmod() id() object() sorted()
    ascii() enumerate() input() oct() staticmethod()
    bin() eval() int() open() str()
    bool() exec() isinstance() ord() sum()
    bytearray() filter() issubclass() pow() super()
    bytes() float() iter() print() tuple()
    callable() format() len() property() type()
    chr() frozenset() list() range() vars()
    classmethod() getattr() locals() repr() zip()
    compile() globals() map() reversed() __import__()
    complex() hasattr() max() round()  
    delattr() hash() memoryview() set()

    1.2一阶段需要掌握的函数

    2、随机验证码函数:

    import random
    #assii:大写字母:65~90,小写 97~122 数字48-57
    tmp = ""
    for i in range(6):
        num =random.randrange(1,4)
        if num == 1:
            rad2 = random.randrange(0,10)
            tmp = tmp+str(rad2)
        elif num == 2:
            rad3 = random.randrange(97, 123)
            tmp = tmp + chr(rad3)
        else:
            rad1 = random.randrange(65,91)
            c = chr(rad1)
            tmp = tmp + c
    print(tmp)
    View Code

    3、文件操作

    使用open函数操作,该函数用于文件处理。

    操作文件时,一般需要经历如下步骤:
    打开文件
    操作文件
    关闭文件

    3.1打开文件

    open(文件名,模式,编码)
    eg:
    f = open("ha.log","a+",encoding="utf-8")
    注:默认打开模式r

    3.2打开模式:

      基本模式:  

    • r:只读模式(不可写)
    • w:只写模式(不可读,不存在则创建,存在则清空内容(只要打开就清空))
    • x:只写模式(不可读,不存在则创建,存在则报错)
    • a:追加模式(不可读,不存在就创建,存在只追加内容)

      二进制模式:rbwbxbab

        特点:二进制打开,对文件的操作都需以二进制的方式进行操作

      对文件进行读写    

      • r+, 读写【可读,可写】
      • w+,写读【可读,可写】
      • x+ ,写读【可读,可写】
      • a+, 写读【可读,可写】

    3.3 文件操作的方法

    class TextIOWrapper(_TextIOBase):
        """
        Character and line based layer over a BufferedIOBase object, buffer.
        
        encoding gives the name of the encoding that the stream will be
        decoded or encoded with. It defaults to locale.getpreferredencoding(False).
        
        errors determines the strictness of encoding and decoding (see
        help(codecs.Codec) or the documentation for codecs.register) and
        defaults to "strict".
        
        newline controls how line endings are handled. It can be None, '',
        '
    ', '
    ', and '
    '.  It works as follows:
        
        * On input, if newline is None, universal newlines mode is
          enabled. Lines in the input can end in '
    ', '
    ', or '
    ', and
          these are translated into '
    ' before being returned to the
          caller. If it is '', universal newline mode is enabled, but line
          endings are returned to the caller untranslated. If it has any of
          the other legal values, input lines are only terminated by the given
          string, and the line ending is returned to the caller untranslated.
        
        * On output, if newline is None, any '
    ' characters written are
          translated to the system default line separator, os.linesep. If
          newline is '' or '
    ', no translation takes place. If newline is any
          of the other legal values, any '
    ' characters written are translated
          to the given string.
        
        If line_buffering is True, a call to flush is implied when a call to
        write contains a newline character.
        """
        def close(self, *args, **kwargs): # real signature unknown
            关闭文件
            pass
    
        def fileno(self, *args, **kwargs): # real signature unknown
            文件描述符  
            pass
    
        def flush(self, *args, **kwargs): # real signature unknown
            刷新文件内部缓冲区
            pass
    
        def isatty(self, *args, **kwargs): # real signature unknown
            判断文件是否是同意tty设备
            pass
    
        def read(self, *args, **kwargs): # real signature unknown
            读取指定字节数据
            pass
    
        def readable(self, *args, **kwargs): # real signature unknown
            是否可读
            pass
    
        def readline(self, *args, **kwargs): # real signature unknown
            仅读取一行数据
            pass
    
        def seek(self, *args, **kwargs): # real signature unknown
            指定文件中指针位置
            pass
    
        def seekable(self, *args, **kwargs): # real signature unknown
            指针是否可操作
            pass
    
        def tell(self, *args, **kwargs): # real signature unknown
            获取指针位置
            pass
    
        def truncate(self, *args, **kwargs): # real signature unknown
            截断数据,仅保留指定之前数据
            pass
    
        def writable(self, *args, **kwargs): # real signature unknown
            是否可写
            pass
    
        def write(self, *args, **kwargs): # real signature unknown
            写内容
            pass
    
        def __getstate__(self, *args, **kwargs): # real signature unknown
            pass
    
        def __init__(self, *args, **kwargs): # real signature unknown
            pass
    
        @staticmethod # known case of __new__
        def __new__(*args, **kwargs): # real signature unknown
            """ Create and return a new object.  See help(type) for accurate signature. """
            pass
    
        def __next__(self, *args, **kwargs): # real signature unknown
            """ Implement next(self). """
            pass
    
        def __repr__(self, *args, **kwargs): # real signature unknown
            """ Return repr(self). """
            pass
    
        buffer = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        closed = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        encoding = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        errors = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        line_buffering = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        name = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        newlines = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _CHUNK_SIZE = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _finalizing = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
    3.x
    View Code

    3.4 管理上下文

    使用open方法打开后要关闭文本。

    with方法后,python会自动回收资源

    py2.7以后的版本with方法支持同时对两个文件进行操作

    eg:with open('log1') as obj1, open('log2') as obj2:

    3.5 文件日常操作

    open(文件名,模式,编码)
    close()
    flush():将内存中的文件数据写入磁盘
    read():读取指针的内容
    readline():只都一行内容
    seek()定位指针位置
    tell()获取当前指针位置
    truncate() 截断数据,仅保留指定之前的数据,依赖于指针
    write() 写入数据

    3.6 文件操作示例代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    ####基本操作方法
    #默认是只读模式,默认编码方式:utf-8
    # f = open('ha.log')
    # data = f.read()
    # f.close()
    # print(data)
    #只读,r
    # f = open("ha.log","r")
    # f.write("asdfs")
    # f.close()
    #只写,w  ---存在就清空,打开就清空
    # f = open("ha1.log","w")
    # f.write("Hello world!")
    # f.close()
    #只写 ,x
    # f = open("ha2.log","x")
    # f.write("Hello world1!")
    # f.close()
    #追加  a,不可读
    # f = open("ha2.log","a")
    # f.write("
    Hello world! a mode")
    # f.close()
    
    ### 字节的方式打开
    ## 默认读取到的都是字节,不用设置编码方式
    ## 1、 只读,rb
    # f = open("ha.log","rb")
    # data =f.read()
    # f.close()
    # print(type(data))
    # print(data)
    # print(str(data,encoding="utf-8"))
    
    #2 只写,wb
    # f = open("ha.log","wb")
    # f.write(bytes("中国",encoding="utf-8"))
    # f.close()
    
    
    ### r+ ,w+,x+,a+
    
    #r+
    # f = open("ha.log",'r+',encoding="utf-8")
    # print(f.tell())
    # data = f.read()
    # print(type(data),data)
    # f.write("德国人")
    # print(f.tell())
    # data = f.read()
    # f.close()
    
    #w+  先清空,之后写入的可读,写后指针到最后
    # f = open("ha.log","w+",encoding="utf-8")
    # f.write("何莉莉")
    # f.seek(0)  # 指针调到最后
    # data = f.read()
    # f.close()
    # print(data)
    
    #  x+  功能类似w+,区别:若文件存在即报错
    
    
    #a +    打开的同时指针到最后
    f = open("ha.log","a+",encoding="utf-8")
    print(f.tell())
    f.write("SB")
    print(f.tell())
    data = f.read()
    print(data)
    f.seek(0)  
    data = f.read()
    print(data)
    print(type(data))
    print(type(f))
    f.close()
    文件操作示例

     4、lambda表达式

      f1 = lambda x,y: 9+x

    5、发送邮件实例代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    def email():
        import smtplib
        from email.mime.text import MIMEText
        from email.utils import formataddr
        ret = True
        try:
            msg = MIMEText('邮件内容 test mail 2017-5-27 09:16:14 2017年1月27日11:16:37 
     2017年1月28日06:47:51', 'plain', 'utf-8')
            msg['From'] = formataddr(["b2b", 'john@xxx.com'])
            msg['To'] = formataddr(["hi hi hi  ", 'john2@xxx.com'])
            msg['Subject'] = "主题2017年5月23日"
    
            server = smtplib.SMTP("mail.xxx.com", 25)
            server.login("john1", "txxx0517")
            server.sendmail('john1@tasly.com', ['john2@tasly.com', ], msg.as_string())
            server.quit()
        except:
            ret = False
        return  ret
    i1 =  email()
    print(i1)
    发送邮件示例
  • 相关阅读:
    赶紧收藏吧!MyBatis-Plus万字长文图解笔记,错过了这个村可就没这个店了
    这篇建议java开发都看看,对Java方法及加深理解的很深,值得一看!
    秒极啊!手把手带你进行shiro授权拦截器的重写,学到了学到了
    java面试复习重点:类的管理及常用工具,教你抓住面试的重点!
    手撸一个外卖点餐系统后台,可以写上简历的实战项目!
    JVM类加载机制详解,建议看这一篇就够了,深入浅出总结的十分详细!
    这份SpringMVC执行原理笔记,建议做java开发的好好看看,总结的很详细!
    iOS-----GitHub上比较齐全的iOS 工具和App
    iOS-----AVFoundation框架的功能详解
    iOS-----UIScrollView
  • 原文地址:https://www.cnblogs.com/workherd/p/6358672.html
Copyright © 2011-2022 走看看