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
posted @ 2023-06-24 16:28  evescn  阅读(23)  评论(0编辑  收藏  举报