前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 模块

python 模块

作者头像
py3study
发布2018-08-02 16:04:42
9470
发布2018-08-02 16:04:42
举报
文章被收录于专栏:python3python3

python的模块分为2种:

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

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

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

代码语言:javascript
复制
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'

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

执行结果如下:

代码语言:javascript
复制
['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
blob.png

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

直接输出sys.argv

代码语言:javascript
复制
print(sys.argv)

结果如下:

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

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

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

blob.png
blob.png

接收3个变量

代码语言:javascript
复制
e:\python_script>python a.py zhang li wang
['a.py', 'zhang', 'li', 'wang']

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

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

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

比如想输出li

代码改成如下:

代码语言:javascript
复制
print(sys.argv[2])

在cmd里面执行

代码语言:javascript
复制
e:\python_script>python a.py zhang li wang
li

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

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

代码语言:javascript
复制
__author__ os
os.system

执行结果如下:

blob.png
blob.png

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

代码语言:javascript
复制
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'

import os

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

执行结果如下:

blob.png
blob.png

可以看出结果是0

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

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

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

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

需要用到os.popen

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

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

代码语言:javascript
复制
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'

import os

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

执行结果如下:

blob.png
blob.png

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

代码语言:javascript
复制
#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'

import os

os.mkdir("new_dir")

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

blob.png
blob.png

导入自定义的模块

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

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

代码语言:javascript
复制
#!/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,代码如下:

代码语言:javascript
复制
import login

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

blob.png
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目录,加入到环境变量中(推荐,这个后续会讲到)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档