zoukankan      html  css  js  c++  java
  • python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块

    闭包

    def make_arerage():
        l1 = []
        def average(price):
            l1.append(price)
            total = sum(l1)
            return total/len(l1)
        return average
    avg = make_everage()
    print(avg(100000))
    print(avg(110000))
    

    闭包的作用:

    # 闭包就是嵌套函数存在的,存在嵌套函数之中的,而且是内层函数对外层非全局变量的引用,会产生闭包。引用的变量也叫自由变量,不会随着函数的结束而消失,会一直保存在内存中,最终的目的是保证了数据的安全
    

    装饰器

    import time
    user = 'alex'
    passwd = 'abc13'
    
    
    def auth(auth_type):
        print("auth func:",auth_type)
        def outer_wrapper(func):
            def wrapper(*args, **kwargs):
                print("wrapper func args:",*args, **kwargs)
                if auth_type == "local":
                    usernmae = input("用户名>>>>>")
                    password = input("密码>>>>>>")
                    if user == usernmae and passwd == password:
                        print("33[32;1mUser33[0m")
                        return func(*args, **kwargs)
                    else:
                        exit("33[31;1m错误33[0m")
                elif auth_type == "ldap":
                    print("搞毛线ldap,不会。。。")
    
            return wrapper
        return outer_wrapper
    
    
    def index():
        print("in index")
    
    
    @auth(auth_type = "local")
    def home(name):
        print("in home",name)
        return "from home"
    
    
    @auth(auth_type = 'ldap')
    def bbs():
        print("in bbs")
    
    
    print(home('alex'))
    index()
    bbs()
    

    random模块

    import random
    random.random()
    random.randint(1,3) # 1-3的整数包括3
    import random
    print(random.random())
    print(random.randint(1,20))
    print(random.randrange(1,3)) # 顾头不顾尾,不包含3
    print(random.choice('12345')) # 可迭代对象中随机取一个
    print(random.sample('12345',2)) # 可迭代对象中随机取两个 
    print(random.uniform(1,10)) # 1-10的浮点数
    items = [1,2,3,4,5,6,7] 
    random.shuffle(items) #洗牌 打乱items的顺序
    print(items)
    
    import random
    checkcode = ''
    for i in range(4):
        checkcode += str(random.randrange(10))
    print(checkcode)
    

    os模块

    import os
    os.getcwd() 获取当前工作目录
    os.chdir("C\Users") 改变当前脚本工作
    os.curdir  返回当前目录:('.')
    os.pardir  获取当前目录的父目录:('..')
    os.makedirs(r"c:acd") 可生成多层递归目录
    os.removedirs(r"c:acd") 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推
    os.mkdir(r"dirname") 生成单级目录
    os.rmdir(r'dirname') 删除单级目录
    os.listdir(r'dirname') 查看当前的目录 包括隐藏文件,并以列表方式打印
    os.remove() 删除一个文件
    os.rename('oldname','newname') 重命名文件/目录
    os.stat('path/filename') 获取文件/目录信息
    os.sep 输出操作系统特定的路径分隔符,win下位“\”,Linux下为“/”
    os.linesep 输出当前当前平台使用的行终止符,win下为"
    ",Linux下为"
    "
    os.pathsep 输出用于分割文件路径的字符串
    os.name 输出字符串指示当前使用平台。win->'nt';linux->'posix'
    os.system("bash command") 运行shell命令,直接显示
    os.environ 获取系统环境变量
    os.path.abspath(path) 返回path规范化的绝对路径
    os.path.split(path) 将path分割成目录和文件名用元组返回
    os.path.dirname() 返回path的目录,其实就是os.path.split(path)的第一个元素
    os.path.basename(path) 返回path最后的文件名。如果path以/或结尾,那么就会返回空值。
    os.path.exists(path) 如果path存在,返回True,不存在返回False
    os.path.isabs(path) 如果path是绝对路径,返回True
    os.path.isfile(path) 如果path是一个存在的文件,则返回True,否则返回False
    os.path.isdir(path) 如果path是一个存在的目录,则返回True,否则返回False
    os.path.join(path1[,path2[,...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
    os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
    

    sys模块

    sys.argv 命令行参数List,第一个元素是程序本身路径
    sys.exit(n) 退出程序,正常退出时exit(0)
    sys.version 获取python解释程序的版本信息
    sys.maxint  最大的Int值
    sys.path    返回模块的搜索路径,初始化时使用python环境变量的值
    sys.platform 返回操作系统平台名称
    sys.stdout.write('please:')
    val = sys.stdin.readline()[:-1]
    

    shutil模块

    shutil.copyfile('userinfo1.txt','test1') # 复制文件到另一个文件
    shutil.copymode(src,dst) 仅拷贝权限、内容、组、用户均不变
    shutil.copysta(src,dst) 拷贝状态的信息,包括:mode bits,atime,mtime,flags
    shutil.copy(src,dst) 拷贝文件和权限
    shutil.copy2(src,dst) 拷贝文件和状态信息
    shutil.ignore_patterns(*patterns)
    shutil.copytree(src,dst,symlinks=False,ignore=None) 递归的去拷贝文件
    shutil.retree(path[,ignore_errors[,onerror]]) 递归的去删除文件
    shutil.move(src,dst) 递归的去移动文件
    shutil.make_archive('shutil_archive_test','zip','path(路径)') 把后边的文件夹压缩到shutil_archive_test.zip中
    shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的
    import zipfile
    # 压缩
    z = zipfile.ZipFile('laxi.zip','w')
    z.write('a.log')
    z.write('data.data')
    z.close()
    
    # 解压
    z = zipfile.ZipFile('laxi.zip','r')
    z.extractall()
    z.close()
    
    import tarfile
    
    # 压缩
    tar = trafile.open("your.tar",'w')
    tar.add('/Users/xxx/bbs.zip', arcname='bbs.zip')
    tar.add('/Users/xxx/cmdb.zip', arcname='cmdb.zip')
    tar.close()
    
    # 解压
    tar = tarfile.open('your.tar','r')
    tar.extractall() # 可设置解压地址
    tar.close()
    
    

    shelve模块

    # shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
    import shelve
    import datetime
    d = shelve.open('shelve_test') # 打开一个文件
    
    # class Test(object):
    #     def __init__(self,n):
    #         self.n = n
    # t = Test(123)
    # t2 = Test(123443)
    # info = {'age':18,'username':"sfs"} # 写进去
    #
    # name = ['alex','wuasi','twusi']
    # d['name'] = name # 吃酒列表
    # d['info'] = info # 持久dict
    # d['date'] = datetime.datetime.now()
    
    # 读出来
    print(d.get("name"))
    print(d.get("info"))
    print(d.get("date"))
    d.close()
    

    python读取xml,修改xml

    https://www.cnblogs.com/alex3714/articles/5161349.html
    

    ConfigParser 模块

    用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser

    [DEFAULT]
    serveraliveinterval = 45
    compression = yes
    compressionlevel = 9
    forwardx11 = yes
    
    [bitbucket.org]
    user = hg
    forwardx11 = yes
    
    [topsecret.server.com]
    host port = 50022
    forwardx11 = no
    
    
    # 写入
    import configparser
    
    config = configparser.ConfigParser()
    config["DEFAULT"] = {'ServerAliveInterval': '45',
                         'Compression': 'yes',
                         'CompressionLevel': '9'}
    
    config['bitbucket.org'] = {}
    config['bitbucket.org']['User'] = 'hg'
    
    config['topsecret.server.com'] = {}
    topsecret = config['topsecret.server.com']
    topsecret['Host Port'] = '50022'  # mutates the parser
    topsecret['ForwardX11'] = 'no'  # same here
    
    config['DEFAULT']['ForwardX11'] = 'yes'
    config['bitbucket.org']['ForwardX11'] = 'yes'
    with open('ha.conf', 'w') as configfile:
        config.write(configfile)
    
    
    # 读
    import configparser
    conf = configparser.ConfigParser()
    conf.read('ha.conf')
    
    print(conf.defaults())
    print(conf.sections())
    print(conf['bitbucket.org']['user'])
    

    hashlib模块

    # 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
    # 如果是中文的话,需要encode成utf-8编码
    import hmac
    h = hmac.new('字体'.encode('utf-8'))
    print(h.hexdigest())
    import hmac
    h = hmac.new(b'hello'.encode('utf-8'))
    print(h.hexdigest())
    
    import hashlib
    m = hashlib.md5()
    m.update(b"sdf")
    print(m.hexdigest())
    m.update(b"It's me")
    print(m.hexdigest())
    m.update(b"It's been a func")
    print(m.hexdigest())
    m2 = hashlib.md5()
    m2.update(b"HelloIt's me")
    print(m2.hexdigest())
    m3 = hashlib.sha1()
    m3.update(b"password")
    print(m3.hexdigest())
    
    
  • 相关阅读:
    ResNet——Deep Residual Learning for Image Recognition
    Inception——Going deeper with convolutions
    VGG——Very deep convolutional networks for large-scale image recognition
    ReLU——Deep Sparse Rectifier Neural Networks
    Oracle、SqlServer——基础知识——oracle 与 SqlServer 的区别(未完工)
    Oracle——判断对象是否存在(未完工)
    javascript——屏蔽右键快捷菜单
    SqlServer——判断对象是否存在
    javascript——事件处理模型(DOM 和 IE)
    ASP.NET——配置文件——连接字符串
  • 原文地址:https://www.cnblogs.com/alex3174/p/11222096.html
Copyright © 2011-2022 走看看