Python模块(导入,内置,自定义,开源)
目录:
模块介绍
自定义模块
内置模块
开源模块
一、模块
1.模块简介
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用python标准库的方法。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
2.模块的引入
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。在调用math模块中的函数时,必须这样引用:
1
2
3
4
|
模块名.函数名 例: import math import sys |
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句
from 模块名 import 函数名1,函数名2....
例:
1
2
3
4
5
6
7
|
import module #从某个模块导入某个功能 from module.xx.xx import xx #从某个模块导入某个功能,并且给他个别名 from module.xx.xx import xx as rename #从某个模块导入所有 from module.xx.xx import * |
模块分为三种:
自定义模块
内置模块
开源模块
3.模块的安装
(1)yum install 模块名
(2)apt-get
pip3 install paramiko #paramiko 是模块名
(4)源码安装
1
2
3
4
5
6
|
需要编译环境:yum install python-devel gcc 下载源码包:wget http: //xxxxxxxxxxx.tar 解压:tar -xvf xxx.tar 进入:cd xxx 编译:python setup.py build 安装:python setup.py install |
二、自定义模块
1.在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。
例:
写一个模块(模块文件要和代码文件在同一目录下)
1
2
3
4
5
6
7
8
9
10
|
#vim moudle_test.py #写入如下代码 #!/usr/bin/env python3 print ( '自定义 moudle' ) #调用 #vim test.py #!/usr/bin/env python3 #导入自定义模块 import moudle_test #执行test.py |
2.模块文件为单独文件夹 ,文件夹和代码在同一目录下
__init__
导入模块其实就是告诉Python解释器去解释那个py文件
导入一个py文件,解释器解释该py文件
导入一个包,解释器解释该包下的 __init__.py 文件
3.sys.path添加目录
如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。
通过os模块可以获取各种目录,例如:
三、内置模块
1.os模块 提供系统级别的操作
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
1
2
3
|
>>> os.getcwd() '/root' >>> |
os.chdir("目录名") 改变当前脚本工作目录;相当于linux下cd命令
1
2
3
4
|
>>> os.chdir( '/usr/local' ) >>> os.getcwd() '/usr/local' >>> |
os.curdir 返回当前目录: ('.')
1
2
|
>>> os.curdir '.' |
os.pardir 获取当前目录的父目录字符串名:('..')
1
2
|
>>> os.pardir '..' |
os.makedirs('目录1/目录2') 可生成多层递归目录(相当于linux下mkdir -p)
1
2
|
>>> os.makedirs( '/python/moudle/' ) # ll /python/moudle/ |
os.removedirs('目录') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
1
2
3
|
>>> os.removedirs( '/python/moudle' ) #a目录中除了有一个b目录外,再没有其它的目录和文件。 #b目录中必须是一个空目录。 如果想实现类似rm -rf的功能可以使用shutil模块 |
os.mkdir('目录') 生成单级目录;相当于shell中mkdir 目录
1
|
>>> os.mkdir( '/python' ) |
os.rmdir('目录') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir
1
2
3
4
5
|
>>> os.rmdir( '/python' ) >>> os.rmdir( '/python' ) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> FileNotFoundError: [Errno 2 ] No such file or directory: '/python' |
os.listdir('目录') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
1
2
|
>>> os.listdir( '/root' ) [ '.Xauthority' , 'yaoyao@192.168.42.51' , '.py.swp' , '.ssh' , 'in.sh' , '1' , 'IPy-0.81.tar.gz' , 'Dockerssh' , 'id_rsa.pub' , 'psutil-2.0.0.tar.gz' , '.python_history' , '.bashrc' , 'ansible' , '.bash_history' , '.vim' , 'IPy-0.81' , '.pip' , '.profile' , '.ansible' , 'python' , '.dockercfg' , 'Docker' , 'util-linux-2.27' , '.viminfo' , 'util-linux-2.27.tar.gz' , 'ubuntu_14.04.tar' , '__pycache__' , 'psutil-2.0.0' , 'xx.py' , 'ip.py' , 'DockerNginx' , '.cache' , 'dict_shop.py' ] |
os.remove()删除一个文件
1
|
>>> os.remove( '/root/xx.py' ) |
os.rename("原名","新名") 重命名文件/目录
1
2
3
4
5
|
>>> os.listdir( '/python' ) [ 'oldtouch' ] >>> os.rename( 'oldtouch' , 'newtouch' ) >>> os.listdir( '/python' ) [ 'newtouch' ] |
os.stat('path/filename') 获取文件/目录信息
1
2
|
>>> os.stat( 'newtouch' ) os.stat_result(st_mode = 33188 , st_ino = 1048593 , st_dev = 51713 , st_nlink = 1 , st_uid = 0 , st_gid = 0 , st_size = 0 , st_atime = 1453442450 , st_mtime = 1453442450 , st_ctime = 1453442500 ) |
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
1
2
3
|
>>> os.sep '/' >>> |
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
1
2
|
>>> os.linesep '\n' |
os.pathsep 输出用于分割文件路径的字符串
1
2
|
>>> os.pathsep ':' |
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
1
2
|
>>> os.name 'posix' |
os.system("pwd") 运行shell命令,直接显示
1
2
3
|
>>> os.system( 'pwd' ) / python 0 |
os.environ
1
2
|
>>> os.environ environ({ '_' : '/usr/bin/python3' , 'SSH_CONNECTION' : 省略n个字符 |
os模块其他语法:
1
2
3
4
5
6
7
8
9
10
11
12
|
os.path模块主要用于文件的属性获取, 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 (path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 |
2、sys模块 用于提供对解释器相关的操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules 返回系统导入的模块字段,key是模块名,value是模块 sys. exit (n) 退出程序,正常退出时 exit (0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdout.write( 'please:' ) val = sys.stdin.readline()[:-1] sys.modules.keys() 返回所有已经导入的模块名 sys.modules.values() 返回所有已经导入的模块 sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 sys. exit (n) 退出程序,正常退出时 exit (0) sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0 sys.version 获取Python解释程序的 sys.api_version 解释器的C的API版本 sys.version_info ‘final’表示最终,也有’candidate’表示候选,serial表示版本级别,是否有后继的发行 sys.displayhook(value) 如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__._.指在python的交互式解释器里,’_’ 代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来 sys.getdefaultencoding() 返回当前你所用的默认的字符编码格式 sys.getfilesystemencoding() 返回将Unicode文件名转换成系统文件名的编码的名字 sys.setdefaultencoding(name)用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出 LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除 sys.builtin_module_names Python解释器导入的模块列表 sys.executable Python解释程序路径 sys.getwindowsversion() 获取Windows的版本 sys.copyright 记录python版权相关的东西 sys.byteorder 本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’ sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息 sys.exec_prefix 返回平台独立的python文件安装的位置 sys.stderr 错误输出 sys.stdin 标准输入 sys.stdout 标准输出 sys.platform 返回操作系统平台名称 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.maxunicode 最大的Unicode值 sys.maxint 最大的Int值 sys.version 获取Python解释程序的版本信息 sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0 |
四、开源模块安装、使用
https://pypi.python.org/pypi 是python的开源模块库,几乎涵盖了你想用python做的任何事情。 事实上每个python开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。
那如何从这个平台上下载代码呢?
1.直接在上面这个页面上点download,下载后,解压并进入目录,执行以下命令完成安装
编译源码 python setup.py build
安装源码 python setup.py install
2.直接通过pip安装
pip3 install paramiko #paramiko 是模块名
pip命令会自动下载模块包并完成安装。
pip命令默认会连接在国外的python官方服务器下载,速度比较慢,你还可以使用国内的豆瓣源,数据会定期同步国外官网,速度快好多
sudo pip install -i http://pypi.douban.com/simple/ paramiko --trusted-host pypi.douban.com # paramiko 是模块名
下载后,直接导入使用就可以,跟自带的模块调用方法无差,演示一个连接linux执行命令的模块
import paramiko ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("192.168.224.101", 22, "root", " ") stdin, stdout, stderr = ssh.exec_command("df")
print(stdout.read().decode("utf-8"))
ssh.close()
输出:
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/cl-root 17811456 7775084 10036372 44% /
devtmpfs 488272 0 488272 0% /dev
tmpfs 499300 0 499300 0% /dev/shm
tmpfs 499300 19344 479956 4% /run
tmpfs 499300 0 499300 0% /sys/fs/cgroup
/dev/sda1 1038336 171112 867224 17% /boot
tmpfs 99864 0 99864 0% /run/user/0
#coding:utf-8 import paramiko ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.108', 22, 'alex', '123') stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
ssh.close(); 执行命令 - 通过用户名和密码连接服务器
Python模块(导入,内置,自定义,开源)的更多相关文章
- Day 20: 面向对象【多态,封装,反射】字符串模块导入/内置attr /包装 /授权
面向对象,多态: 有时一个对象会有多种表现形式,比如网站页面有个按钮, 这个按钮的设计可以不一样(单选框.多选框.圆角的点击按钮.直角的点击按钮等),尽管长的不一样,但它们都有一个共同调用方式,就是o ...
- python模块导入细节
python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: ...
- 【转】python模块导入细节
[转]python模块导入细节 python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码 ...
- python函数: 内置函数
forthttp://blog.csdn.net/pipisorry/article/details/44755423 Python内置函数 Python内置(built-in)函数随着python解 ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- (转)python函数: 内置函数
原文:https://blog.csdn.net/pipisorry/article/details/44755423 https://juejin.im/post/5ae3ee096fb9a07aa ...
- python之路——内置函数和匿名函数
阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...
- python模块导入-软件开发目录规范-01
模块 模块的基本概念 模块: # 一系列功能的结合体 模块的三种来源 """ 模块的三种来源 1.python解释器内置的模块(os.sys....) 2.第三方的别人写 ...
- Python反射和内置方法(双下方法)
Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...
- python常用数据类型内置方法介绍
熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...
随机推荐
- 开源录屏软件Capture推荐
参考链接:有哪些值得推荐的电脑录屏软件与手机录屏软件? - 霸都丶傲天的回答 - 知乎 下载地址(9.0支持中文)
- 安卓 App 性能专项测试之流畅度深度解析-上篇
指标背景 流畅度,顾名思义是用户感知使用App页面时的流畅情况,"App卡不卡",这是用户最直接的感受. 但是要用量化之后的数据衡量流畅度,在Android平台这边并没有直接有效的 ...
- RobotFrameWork中使用Chrome浏览器
RF默认使用的是Firefox浏览器,如果要修改为其他浏览器要怎么做呢? 1.按F5搜索关键字[Open Browser],可以看到其帮助信息中说明了不同浏览器时browser参数的值 2.Pytho ...
- 21 Oracle 数据库的安装教程
1.百度网盘中下载oracle 11g的安装包 win64_11gR2_database 解压后: 2.安装过程 <1>双击setup.exe,等待一会(2分钟左右),跳出如下界面. 点击 ...
- javascript中 for in 、for 、forEach 、for of 、Object.keys().
一 .for ..in 循环 使用for..in循环时,返回的是所有能够通过对象访问的.可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例.这里需要注意的是使用for-in返回的属性因各 ...
- Java学习笔记二——正则表达式
Java正则表达式 正则表达式的规则 “abc” 匹配字符串abc [abc] 匹配[]里任意一个字符 [a-z]: 匹配所有小写字母中的任意一个字符 [A-Z]: 匹配所有大写字母中的任意一个字符 ...
- Windows状态栏图标显示异常
1.新建TXT文档 2.写上以下代码 taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local del iconcache.db / ...
- Ubuntu 编译安装 nginx
有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...
- webpack 打包出多个HTML文件,多个js文件,图片文件放置到指定文件夹中
一.webpack.config.js简单代码 const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { ...
- mysql执行出错:Table 'k_user' is read only
执行sql的时候发现出错 Table 'k_user' is read only 1.给mysql权限 chmod 777 mysql 2.执行一下命令 mysqladmin -uroot -p re ...