• 小知识点随记


    一.__init__.py文件的用处

    1.在py2中引用其他文件夹中的模块的时候,需要先建立一个__init__.py文件

    1)在python3里面要是导入其他目录下的python文件的话:

    如:from 第七周作业.core.login import login 

    注意:第七周作业.core是文件夹的名字,login是py文件名,login 是函数名

    2)在python2里面如果要导入其他目录下的python文件的话,需要在这个文件下面建一个__init__.py文件

    如果还是引用上面login 函数的话,需要先在core文件夹下建立一个__init__.py文件,那么他下面的函数或者文件才可以被引用

    如:from 第七周作业.core.login import login 

    2.直接导入一个包

    __init__.py就是区分普通文件夹和包的,当文件夹中存在__init__.py文件的时候,这个文件夹就是一个包

    导入一个包的实质就是把这个目录下的__init__.py文件从上到下执行一次

    假如hhh文件夹下有一个文件__init__.py,内容为:

    print("今天天气真好!")

    在文件夹test里直接import hhh 就可以了,执行结果就是:今天天气真好

    程序的入口在哪个目录下,那么当前目录就再程序入口的目录下

    例子:如果想在day7的文件夹test.py里引用包里的my.py文件的话

    3.在引用包的时候,也操作其下面的py文件,采用hhh.my.my_func()的方式

    1.由于引用包的实质是将包里的__init__.py内容执行一遍,那么需要先在__init__.py文件中导入my.py文件

    2.虽然my.py文件和__init__.py在一个文件夹hhh下,可是程序的入口test.py在day7个目录下,那么当前目录就再day7的目录下,不可以用import my 代码从day7目录下导入my,需要使用from  . import my,在__init__.py所在的文件下导入my

    3.在入口test.py里面直接引用hhh包就可以,如下图: 

    上述是在运行入口使用hhh.my.my_func()的方式例子,方然也可以用py3中的那样from hhh.my import my_func也可以,不用在__init__.py文件里from  . import my

    二.贪婪模式与非贪婪模式

    假如取标题中的URL,如下图:

    1.贪婪模式,如下,他会把需要匹配的后面的内容不需要的也给全部返回来的

    2.非贪婪模式:默认是贪婪模式的,要是想要非贪婪模式的话,就需要在后面加上一个?号

    该网站可以查找一些常用的正则表达式http://tool.oschina.net/regex

     三.os模块中的system命令和open命令的区别

    1.system命令,执行的py文件的编码是UTF-8的,在windows中显示的结果是JDK格式的,所以显示乱码,使用read的时候python之间将显示的时候转为UTF-8了,所以显示是正确的,不会乱码

    import os
    os.system('ipconfig') # 这个方法,能执行命令,但是没办法获取结果
    res=os.system('ipconfig')
    print(res) #打印出来是一个0,如果输入的命令不存在的话,返回的结果就是1了
    # 返回结果:
    # Windows IP ����
    #
    #
    # ��̫�������� ��̫��:
    #
    # ý��״̬ . . . . . . . . . . . . : ý���ѶϿ�����
    # �����ض��� DNS ��׺ . . . . . . . :
    # 0

     2.open命令,直接用open的话,返回的是内存地址

    eg1:

    import os
    os.popen('ipconfig')
    res=os.popen('ipconfig')
    print(res) #返回的是一个内容地址<os._wrap_close object at 0x000000EDF095B748>

     eg2:需要使用read方法获取一下,返回的是执行命令之后的返回结果

    import os
    res=os.popen('ipconfig').read()
    print(res)
    返回结果:
    Windows IP 配置
    返回结果
    以太网适配器 以太网:

    媒体状态 . . . . . . . . . . . . : 媒体已断开连接
    连接特定的 DNS 后缀 . . . . . . . :

    无线局域网适配器 本地连接* 2:

    区别就是system没有返回值,open有返回值,当需要查询操作命令的返回结果的时候,就可以用open方法;执行的py文件的编码是UTF-8的,在windows中显示的结果是JDK格式的,所以显示乱码,使用read的时候python将显示的内容转为UTF-8了,所以显示是正确的,不会乱码

    LInux下top命令是动态的监控服务器的资源,CUP、内存的使用率,这样的命令使用popen就不太好用了,直接用就会报错了

    top -n 1每次只取一次,这样的话才可以获取到如:

    import os
    res=os.popen('top -n 1').read()
    print(res)

    四.zip函数,循环的时候同时循环两个list,字符串也可以,只有个数一样的都可以
    eg1:
    list1=[1,2,3]
    list2=['xiaoming','niuniu','MLing']
    for i,k in zip(list1,list2):
    print(i,k)

    返回结果:

    1 xiaoming
    2 niuniu
    3 MLing

    eg:2
    list1="1234"
    list2="MLIng"
    for i,k in zip(list1,list2):
    print(i,k)
    返回结果:

    1 M
    2 L
    3 I
    4 n

    注意:循环的列表或者字符串的个数最好一样不一样的话,只循环到都一样的部分

    
    
    
  • 相关阅读:
    Python——协程
    Linux——raid介绍
    Linux——网关介绍
    Linux——inode节点介绍
    算法:排序加二分查找
    Mysql主从复制作用和工作原理详解
    Selenium中错误:selenium.common.exceptions.ElementClickInterceptedException: Message: element click inte
    redis.exceptions.DataError: Invalid input of type: 'dict'. Convert to a byte, string or number first
    Python之requests错误Expecting value: line 1 column 1 (char 0)
    简述cookies和session的区别
  • 原文地址:https://www.cnblogs.com/MLing/p/7096662.html
Copyright © 2020-2023  润新知