Python中常用的模块

Posted p0st

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中常用的模块相关的知识,希望对你有一定的参考价值。

模块,用一砣代码实现了某个功能的代码集合。 

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

  • 自定义模块
  • 内置模块
  • 开源模块

自定义模块

1.定义模块

情景一:

  技术分享图片

情景二:

  技术分享图片

情景三:

  技术分享图片

2.导入模块

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

import module
from module.xx.xx import xx
from module.xx.xx import xx as rename  
from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

import sys
print sys.path
  
结果:
[/Users/wupeiqi/PycharmProjects/calculator/p1/pp1, /usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg, /usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg, /usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg, /usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg, /usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg, /usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg, /usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg, /usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg, /usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg, /usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg, /usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg, /usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg, /usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg, /usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg, /usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg, /usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg, /usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg, /usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg, /usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg, /usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg, /usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg, /usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg, /Users/wupeiqi/PycharmProjects/calculator, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old, /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload, /usr/local/lib/python2.7/site-packages, /Library/Python/2.7/site-packages]

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append(‘路径‘) 添加。
通过os模块可以获取各种目录,例如:

技术分享图片
import sys
import os

pre_path = os.path.abspath(../)
sys.path.append(pre_path)
os模块

开源模块

1.下载安装

技术分享图片
yum 
pip
apt-get
...
方式一
技术分享图片
下载源码
解压源码
进入目录
编译源码    python setup.py build
安装源码    python setup.py install
方式二

注:在使用源码安装时,需要使用到gcc编译和python开发环境,所以,需要先执行:

yum install gcc
yum install python-devel
或
apt-get python-dev

安装成功后,模块会自动安装到 sys.path 中的某个目录中,如:

/usr/lib/python2.7/site-packages/

2.模块介绍

 

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

  2.1、下载安装

pip3 install paramiko
# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto # 下载安装 pycrypto wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz tar -xvf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py build python setup.py install # 进入python环境,导入Crypto检查是否安装成功 # 下载安装 paramiko wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz tar -xvf paramiko-1.10.1.tar.gz cd paramiko-1.10.1 python setup.py build python setup.py install # 进入python环境,导入paramiko检查是否安装成功

  2.2.使用方法

技术分享图片
#!/usr/bin/env python
#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();
执行命令 - 通过用户名和密码连接服务器
技术分享图片
import paramiko

private_key_path = /home/auto/.ssh/id_rsa
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(主机名 , 端口, 用户名, key)

stdin, stdout, stderr = ssh.exec_command(df)
print stdout.read()
ssh.close()
执行命令 - 过密钥链接服务器
技术分享图片
import os,sys
import paramiko

t = paramiko.Transport((182.92.219.86,22))
t.connect(username=wupeiqi,password=123)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(/tmp/test.py,/tmp/test.py) 
t.close()


import os,sys
import paramiko

t = paramiko.Transport((182.92.219.86,22))
t.connect(username=wupeiqi,password=123)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(/tmp/test.py,/tmp/test2.py)
t.close()
上传或者下载文件 - 通过用户名和密码
技术分享图片
import paramiko

pravie_key_path = /home/auto/.ssh/id_rsa
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport((182.92.219.86,22))
t.connect(username=wupeiqi,pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(/tmp/test3.py,/tmp/test3.py) 

t.close()

import paramiko

pravie_key_path = /home/auto/.ssh/id_rsa
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport((182.92.219.86,22))
t.connect(username=wupeiqi,pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(/tmp/test3.py,/tmp/test4.py) 

t.close()
上传或下载文件 - 通过密钥

更多猛击

 

 

 

 

 

 

 

 

 

 

 

1、定义模块

情景一:

  技术分享图片

情景二:

  技术分享图片

情景三:

  技术分享图片

2、导入模块

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

1
2
3
4
import module
from module.xx.xx import xx
from module.xx.xx import xx as rename  
from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

1
2
3
4
5
import sys
print sys.path
  
结果:
[‘/Users/wupeiqi/PycharmProjects/calculator/p1/pp1‘‘/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg‘‘/usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg‘‘/usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg‘‘/usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg‘‘/usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg‘‘/usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg‘‘/usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg‘‘/Users/wupeiqi/PycharmProjects/calculator‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old‘‘/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload‘‘/usr/local/lib/python2.7/site-packages‘‘/Library/Python/2.7/site-packages‘]

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append(‘路径‘) 添加。
通过os模块可以获取各种目录,例如:



以上是关于Python中常用的模块的主要内容,如果未能解决你的问题,请参考以下文章

python常用代码片段总结

nodejs常用代码片段

python常用代码

盘点Python常用的模块和包

Python中常用的模块

Python中的模块常用模块——12