Python 模块(转载)
Python 常用模块
模块分类
- 自定义模块
- 开源模块
- 内置模块
自定义模块
定义模块
情景一
情景二
情景三
导入模块
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/evescn/Documents/GitHub/python', '/Users/evescn/Documents/GitHub/python', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display', '/Users/evescn/.conda/envs/python/lib/python310.zip', '/Users/evescn/.conda/envs/python/lib/python3.10', '/Users/evescn/.conda/envs/python/lib/python3.10/lib-dynload', '/Users/evescn/.conda/envs/python/lib/python3.10/site-packages', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend']
如果sys.path
路径列表没有你想要的路径,可以通过 sys.path.append('路径')
添加。
通过os
模块可以获取各种目录,例如:
import sys
import os
print(os.path.abspath(__file__))
pre_path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(pre_path)
print(sys.path)
结果:
/Users/evescn/Documents/GitHub/python/1.py
['/Users/evescn/Documents/GitHub/python', '/Users/evescn/Documents/GitHub/python', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display', '/Users/evescn/.conda/envs/python/lib/python310.zip', '/Users/evescn/.conda/envs/python/lib/python3.10', '/Users/evescn/.conda/envs/python/lib/python3.10/lib-dynload', '/Users/evescn/.conda/envs/python/lib/python3.10/site-packages', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend', '/Users/evescn/Documents/GitHub/python']
开源模块
下载安装
下载安装有两种方式
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/
导入模块
同自定义模块中导入的方式
模块 paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
1、下载安装
pip3 install paramiko
或
# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
# 下载安装 pycrypto
wget https://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 https://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、使用模块
- 执行命令 - 通过用户名和密码连接服务器
# 执行命令 - 通过用户名和密码连接服务器
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.0.100', 22, 'evescn', '123456')
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close();
- 执行命令 - 过密钥链接服务器
# 执行命令 - 过密钥链接服务器
import paramiko
private_key_path = '/home/evescn/.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(('192.168.0.100',22))
t.connect(username='evescn',password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py')
t.close()
import os,sys
import paramiko
t = paramiko.Transport(('192.168.0.100',22))
t.connect(username='evescn',password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close()
- 上传或下载文件 - 通过密钥
# 上传或下载文件 - 通过密钥
import paramiko
pravie_key_path = '/home/evescn/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('192.168.0.100',22))
t.connect(username='evescn',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py')
t.close()
import paramiko
pravie_key_path = '/home/evescn/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('192.168.0.100',22))
t.connect(username='evescn',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py')
t.close()
内置模块
python 自带的模块功能,例如:os,sys,time,json,pickle 等模块
转载
https://www.cnblogs.com/wupeiqi/articles/4963027.html