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,截图如下:
sys.argv是用来获取命令行参数的,
直接输出sys.argv
print(sys.argv)
结果如下:
['E:/python_script/a.py']
在Pycharm里面执行,它会输出绝对路径。
在cmd里面,进入脚本目录,再次执行。它输出的是相对路径
接收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
执行结果如下:
把dir执行的结果赋值给一个变量,输出时,带一个标记。代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
import os
#执行命令,不保存结果
cmd_res = os.system("dir")
print("-->",cmd_res)
执行结果如下:
可以看出结果是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)
执行结果如下:
创建一个文件夹new_dir,代码如下:
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
import os
os.mkdir("new_dir")
执行之后,在Pycharm编辑器左上角,会出现一个目录
导入自定义的模块
这里介绍一个,最简单的用户登录模块
在同级目录下,创建文件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,效果如下:
注意:
在同级目录下,直接import 文件名,去掉后缀.py。就可以实现自定义的模块调用了。
现在我把login.py移动到new_dir目录下
再次运行a.py,就会报错
ModuleNotFoundError: No module named 'login'
首先,python 导入模块的时候,优先从当前目录中寻找文件login.py。如果不存在,会在环境变量中的文件中搜索。最后发现不存在时,提示 No module
这个问题,有3个解决办法:
1.把模块放到同级目录(不推荐)
2.把模块放到环境变量的其中一个目录(不推荐)
3.把new_dir目录,加入到环境变量中(推荐,这个后续会讲到)