zoukankan      html  css  js  c++  java
  • python语法基础_模块

    模块

    模块介绍

    模块是一系列常用功能的集合体,一个py文件就是一个模块。

    为什么要使用模块

    1、从文件级别组织程序,更方便管理
    2、拿来主义,提升开发效率

    导入

    import 和from区别

    import

    缺点: 占用内存比较大

    优点: 不会和当前文件定义的变量和函数冲突

    from

    缺点: 会和当前文件定义变量函数冲突

    优点: 占用内存比较小

    模块分类:

    1. 内置模块(标准库)--python解释器自带的.py文件(模块)
    2. 第三方模块(各路神仙写的)--需要额外下载的
    3. 自定义模块(自己写的)--不需要下载的

    模块的两种用法

    • 脚本

      在cmd中的执行 python test.py

    • 模块

      不使用或者导入

    分文件优点:

    1. 避免写重复代码
    2. 可以多次调用
    3. 学模块不要死学,不要死记
    __all__=['可以被导入的函数名和变量名字']
    

    导入路径:

    相对路径(点出来)

    绝对路径

    from sys import 
    pathpath.insert(0,"写本电脑地址")
    import meet#名字
    #执行
    
    

    自定义 > 内置 > 第三方

    ________________________________________________________________________________________

    内置模块

    时间模块

    time.time()   # 时间戳 浮点型
    time.sleep()  # 睡眠 秒单位
    time.gmtime() / time.localtime() # 时间戳 -- 结构化
    time.strftime("格式化","结构化时间") #  结构化 -  字符串
    time.strptime("字符串","格式化") # 字符串 - 结构化
    time.mktime() # 结构化 -- 时间戳
    

    datetime模块

    将当前时间转化成时间戳
    t = datetime.now()
    print(t.timestamp())
    
    将时间戳转化成当前时间
    import time
    print(datetime.fromtimestamp(15000000000))
    
    将字符串转成对象
    print(type(datetime.strptime("2019-10-10 22:23:24","%Y-%m-%d %H:%M:%S")))
    
    将对象转成字符串
    print(str(datetime.now()))
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    
    datetime加减
    print(datetime.now() + timedelta(hours=30 * 24 * 12))
    print(datetime.now() - timedelta(hours=30 * 24 * 12))
    

    random (随机数)模块

    print(random.random())          # 0 ~ 1
    print(random.uniform(1,10))     # 1 ~ 10
    print(random.randint(1,50))     # 1 ~ 50(闭区间)
    print(random.randrange(1,5,2))    # randrange(起始,终止,步长)
    print(random.choice([1,2,3,4,5,])) # 选择一个元素
    print(random.choices([1,2,3,4,5,],k=2))   # 选择两个元素,会有重复
    print(random.sample((1,2,3,4,5),k=2))  # 选择两个元素,不会有重复(除非只有两个)
    
    lst = [1,2,3,4,5,6,7,8,9,0]
    random.shuffle(lst)  # 顺序打乱
    print(lst)
    

    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]
    

    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())
    

    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()
    

    TODO

  • 相关阅读:
    LeetCode0680.验证回文字符串 Ⅱ
    20145208 蔡野 《网络对抗》Exp6 信息搜集与漏洞扫描
    20145208 蔡野 《网络对抗》Exp5 MSF基础应用
    辅助模块:udp_sweep
    对客户端攻击:adobe_toolbutton
    对浏览器攻击:MS10-002
    主动攻击:利用ms08_067_netapi进行攻击
    20145208 蔡野 《网络对抗》Exp4 恶意代码分析
    20145208 蔡野《网络对抗》Exp3 Advanced 恶意代码伪装技术实践
    20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入
  • 原文地址:https://www.cnblogs.com/SkyRabbit/p/11245900.html
Copyright © 2011-2022 走看看