zoukankan      html  css  js  c++  java
  • Day22~23 模块

    strip()默认去首尾空格和回车

    路径拼接尽量用join不用+号

    ###自定义模块

    Package有__init__.py 文件,文件夹Directory中没有__init__.py

    alt+/ 调上一个函数

    ###import功能:1.执行对应的文件,2.引入变量名

    比较

    import cal

    cal.add()

    from cal import add

    add()

    from cal import * ###导出cal模块中所有功能,但不推荐该写法,有可能会与def自定义函数重名,结果指向最后的函数

    ###import寻找的路径

    import sys

    print(sys.path)#sys.path的路径就是执行文件bin.py的路径,即当前文件bin.py所在的位置(bin.py作为程序的入口)

    可以新建package命名my_module(和bin.py同级)里面放置有cal.py,即可from my_module import cal使用cal函数,即便是my_module下的文件也从bin.py的文件层级开始检索(遵从sys.path路径), 意即my_module下的文件即便是同级文件也不能相互import,必须是执行文件同级才可以相互import,否则用from…import…找寻

    main.py逻辑相关组函数,所有与逻辑相关的函数都房在此文件里

    package用来组织模块,不同的包可以避免同名模块的冲突

    ###包被调用时,执行相应的__init__文件

    若web1,web2,web3都为package,cal为.py文件,add为函数名,且web1包含web2,web2包含web3

    from web1.web2.web3 import cal

    cal.add()

    from web1.web2.web3.cal import add

    add()

    ###写测试代码的语句

    if __name__==“__main__” #该语句若放在bin文件中表示不想让该bin文件被调用

          main.run()  

    ###总汇

    重要的模块:log,re

    json,pickle,shelve重点使用json

    ###time模块,不在lib文件夹内

    print(time.time())#时间戳,计算从1970年1月1日00:00据此刻共计多少秒,1970年unix诞生time.localtime() #struct time结构化时间,当地时间

    time.gmtime() #世界标准时间(英国)

    time.mktime(time.localtime()) #将结构化时间转化成时间戳

    #将结构化时间转成字符串时间strftime %X时分秒

    print(time.strftime("%Y---%m-%d %X",time.localtime()))

    >>>2019---08-14 12:52:05

    # ------将字符串时间转成结构化时间strptime

    print(time.strptime("2016:12:24:17:50:36","%Y:%m:%d:%X"))

    >>>time.struct_time(tm_year=2016, tm_mon=12, tm_mday=24, tm_hour=17, tm_min=50, tm_sec=36, tm_wday=5, tm_yday=359, tm_isdst=-1)

    print(time.asctime())

    print(time.ctime())

    >>>Wed Aug 14 13:21:51 2019

    import datetime

    print(datetime.datetime.now())

    ###随机模块random

    随机字母

    alf=chr(random.randint(65,122))

    import random

    ret=random.random()

    ret=random.randint(1,3)

    ret=random.randrange(1,3)

    ret=random.choice([11,22,33,44,55])

    ret=random.sample([11,22,33,44,55],2)

    ret=random.uniform(1,4)

    ret=[1,2,3,4,5]

    random.shuffle(ret)

    #设置验证码

    def v_code():

        ret=""

        for i in range(5):

            num=random.randint(0,9)

            alf=chr(random.randint(65,122))

            s=str(random.choice([num,alf]))

            ret+=s

        return ret

    print(v_code())

    ###__file__,Pycharm中处理为绝对路径+文件名,BASE_DIR

    临时添加路径

    import sys

    sys.path.append(r“c:….”)#建议填路径不要如此写,程序写死

    import os

    print(__file__)#当前文件路径及名

    os.path.dirname(__file__)

    BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))

    sys.path.append(BASE_DIR)

    os.path.abspath绝对路径,pycharm和终端都可使用

    ###os模块

    os.chdir(".")返回当前目录: ('.')

    os.chdir("..") 获取当前目录的父目录字符串名:('..')

    os.listdir() os.makedirs('dirname1/dirname2')    可生成多层递归目录

    os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

    os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname

    os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

    os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

    os.remove()  删除一个文件

    os.rename("oldname","newname")  重命名文件/目录

    os.stat('path/filename')  获取文件/目录信息

    os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"

    os.linesep    输出当前平台使用的行终止符,win下为" ",Linux下为" "

    os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:

    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)  返回path的目录。其实就是os.path.split(path)的第一个元素

    os.path.basename(path)  返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素

    os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False

    os.path.isabs(path)  如果path是绝对路径,返回True

    os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False

    os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False

    os.path.join(a,b)  涉及路径拼接

    os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间

    os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间

    ###sys模块

    sys.argv

    sys.stdout.write(“#”)

    import sys,time

    for i in range(10):

        sys.stdout.write(‘#’)#写一个#号但不显示放入缓存里等10个#号写好一次性放出,故需刷新用flush

        time.sleep(1)

    该语句使号立刻在屏幕上显示

    ###json,pickle序列化对象

    如果有字符串的话,json把单引号都变为双引号 

    json.dumps()可以把所有数据类型转换为字符串

    dic_str=json.dumps(dic)

    data=json.loads(‘文件名’)

    pickle.dumps()处理为字节

    推荐用json

    ###xml

    ###re正则表达式(很重要)

    由C编写,所以速度很快

    元字符:. ^ $ * + ? { } [ ] | ( )

    re.findall(“xyy*?”,”daagagbxyyyy”)

     .  通配符代表除了外的任意一个符号 

    ^ 以什么作为开头,如^a,只在字符串的开头匹配

    $ 以什么作为结尾,如x$, 结尾是x进行匹配

    * 按照紧挨的字符重复匹配0到无穷次

    + 按照紧挨的字符重复匹配1到无穷次 

    ?按照紧挨的字符重复匹配0到1次

    { } 按照紧挨的字符重复,范围自己定,例如{6},表示重复6次,或{3,}表示重复3到无穷次

    * + ? { }均属贪婪匹配,按最大次匹配。后面加?变为惰性匹配

    [ ] 字符集,字符集里无特殊符号

    [a-z],匹配abcd…xyz

    [^a-z] [^]里的^非的意思表示非a到z

    [ ]:特殊-,^,

    例如:re.findall(“q[^a-z]”,”qr’)

    >>>[ ]

    功能进行转义

    反斜杠后边跟元字符去除特殊功能,比如.

    反斜杠后边跟普通字符实现特殊功能,比如d

    d  匹配任何十进制数;它相当于类 [0-9]。

    D 匹配任何非数字字符;它相当于类 [^0-9]。

    s  匹配任何空白字符;它相当于类 [ fv]。

    S 匹配任何非空白字符;它相当于类 [^ fv]。

    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。

    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]

      匹配一个特殊字符边界,比如空格 ,&,#等 

    r””,加r表示字符串不做任何转义

    () re.search(“(?P<name>w+)”,””).group(“name”)

    | 的优先级高于()

    findall返回列表,search返回的是对象,只找到一个满足条件的就不在找了,用re.search().group()

    re.findall(。。。(。。。)。。。) 优先匹配分组,再匹配其他,

    去优先级re.findall(。。。(?:。。。)。。。)

    re.match()search,仅在字符串起始处匹配

    re.split(” “,”hello abc def“) #按空格分割 

    >>>[‘hello’,’abc’,’def’] 

    re.split(“[ab]”,”abc”) #先按a分abc,a左边为空,右边bc,得到结果[‘’,bc],同理再用b分[‘’,bc]

    >>>[‘’,’’,’c’]

    re.sub(”匹配规则“,”替换对象“,”字符串“ ,匹配次数) 

    re.subn() 返回元组形式

    com = re.compile(“规则”)

    com.findall(“字符串”)

    re.finditer() 封装返回到迭代器里

    ret=re.finditer(…)

    next(ret).group()

    ###config

    不区分大小写

    default 公共默认部分

    ###hashlib模块

    摘要算法: 把不定长的字符串转化成定长的,转化的密文是唯一的

    md5只能把明文变成密文,sha256常用

    import hashlib

    obj = hashlib.md5()

    obj.update(“hello”.encode(“utf8”))

    print(obj.hexdigest())

      

  • 相关阅读:
    JavaScript基础
    CSS——网页的布局方式
    CSS——选择器及三大特性
    CSS——常用属性
    Redis——Redis持久化机制、Jedis的使用、Jedis连接池
    Redis——NOSQL、Redis概述、Redis数据类型、通用命令
    JDBC——使用JDBC事务分层完成转账案例
    JDBC——JDBC中的事务、DBUtils使用事务
    Dao组件
    集合的介绍(完全版)
  • 原文地址:https://www.cnblogs.com/xuwinwin/p/11465504.html
Copyright © 2011-2022 走看看