python 模块

发布时间:2018-02-22 14:00:21编辑:admin阅读(3478)

    python的模块分为2种:

    1.标准库(不需要安装,直接导入就可以使用的)

    2.第三方库(必须要手动安装的)


    先来介绍2个标准库:sys和os

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'

    import sys
    #打印环境变量
    print(sys.path)

    执行结果如下:

    ['E:\\python_script', 'E:\\python_script', 'C:\\Program Files\\Python36\\python36.zip', 'C:\\Program Files\\Python36\\DLLs', 'C:\\Program Files\\Python36\\lib', 'C:\\Program Files\\Python36', 'C:\\Program Files\\Python36\\lib\\site-packages']

    这打印的,就是python的全局环境变量。这里面都是路径,路径里面存的都是什么呢?就是python导入一个库或者python内部自己进行调用的时候,它就在这些路径里面去找。

    比如导入一个模块sys,那么sys模块必须在这些目录之中,至少存在一个目录里面。如果不存在,就会提示找不到该模块。

    存在,就直接加载进来。

    python标准库在 python安装路径\lib目录下,里面有N多.py结尾的文件,比如re模块,就是re.py


    python第3方库一般存在 python安装路径\lib\site-packages 比如:

    C:\Program Files\Python36\Lib\site-packages

    比如Django,会存在这个目录里面。

    我安装的是最新版Django,截图如下:

    blob.png

    sys.argv是用来获取命令行参数的,

    直接输出sys.argv

    print(sys.argv)

    结果如下:

    ['E:/python_script/a.py']

    在Pycharm里面执行,它会输出绝对路径。

    在cmd里面,进入脚本目录,再次执行。它输出的是相对路径

    blob.png

    接收3个变量

    e:\python_script>python a.py zhang li wang
    ['a.py', 'zhang', 'li', 'wang']

    输出的结果是一个列表,列表的概念,后续会讲到。

    服务器有些脚本,执行的时候,需要加参数。那么就需要用sys.argv来接收参数,程序做判断就可以了。


    sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始。

    比如想输出li

    代码改成如下:

    print(sys.argv[2])

    在cmd里面执行

    e:\python_script>python a.py zhang li wang
    li

    sys模块暂时先讲到这里,下面来讲os模块


    os模块主要是操作系统相关的,比如查看系统负载状态,磁盘,创建文件。。。。

    __author__ os
    os.system

    执行结果如下:

    blob.png

    把dir执行的结果赋值给一个变量,输出时,带一个标记。代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'

    import os

    #执行命令,不保存结果
    cmd_res = os.system("dir")
    print("-->",cmd_res)

    执行结果如下:

    blob.png

    可以看出结果是0

    为什么是0呢?而不是文件列表呢?

    os.system在执行的时候,是直接输出到屏幕了。

    执行成功返回0,失败返回1。


    如果想要输出文件列表,怎么办呢?

    需要用到os.popen

    os.popen() 方法用于从一个命令打开一个管道。

    执行的结果是一个对象,存储在内存中。需要用read()才能读取,代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'

    import os

    cmd_res = os.popen("dir").read()
    print("-->",cmd_res)

    执行结果如下:

    blob.png


    创建一个文件夹new_dir,代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'

    import os

    os.mkdir("new_dir")

    执行之后,在Pycharm编辑器左上角,会出现一个目录

    blob.png


    导入自定义的模块

    这里介绍一个,最简单的用户登录模块

    在同级目录下,创建文件login.py,代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'
    
    import getpass
    
    _username = "xiao"
    _password = "xiao123"
    username = input("username:")
    #password = getpass.getpass("password:")
    password = input("password:")
    print(username,password)
    
    if _username == username and _password == password:
        print("Welcome user {name} login...".format(name=username))
    else:
        print("Invalid username or password!")

    创建文件a.py,代码如下:

    import login

    执行文件a.py,效果如下:

    blob.png

    注意:

    在同级目录下,直接import 文件名,去掉后缀.py。就可以实现自定义的模块调用了。


    现在我把login.py移动到new_dir目录下

    再次运行a.py,就会报错

    ModuleNotFoundError: No module named 'login'

    首先,python 导入模块的时候,优先从当前目录中寻找文件login.py。如果不存在,会在环境变量中的文件中搜索。最后发现不存在时,提示 No module


    这个问题,有3个解决办法:

    1.把模块放到同级目录(不推荐)

    2.把模块放到环境变量的其中一个目录(不推荐)

    3.把new_dir目录,加入到环境变量中(推荐,这个后续会讲到)

关键字