模块-模块介绍,PyYaml

本章小结:

1.模块介绍
10.yaml处理

一、模块介绍

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

模块分为三种:
自定义模块
内置标准模块(又称标准库)
开源模块

自定义模块 和开源模块的使用参考 http://www.cnblogs.com/wupeiqi/articles/4963027.html

 

二、自定义模块

1、定义模块

  自己定义的python一个或多个.py文件

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)

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

import sys
import os
pre_path = os.path.abspath('../')
sys.path.append(pre_path)
print(sys.path)

 

三、开源模块

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、导入模块

同自定义模块中导入的方式。

3、模块 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/dream/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)使用模块

 执行命令-通过用户名和密码连接服务器

#!/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()

上传或下载文件-通过用户名和密码

#put
import os,sys
import paramiko
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='dream',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py')
t.close()

#get
import os,sys
import paramiko
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='dream',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close()

上传或下载文件-通过密钥

#put
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='dream',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py') 
t.close()

#get
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='dream',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py') 
t.close()

 

四、内置模块

 内置模块如下:

os:https://www.cnblogs.com/wzh313/articles/9142894.html

shelve:https://www.cnblogs.com/wzh313/articles/9655758.html

hashlib&hmac:https://www.cnblogs.com/wzh313/articles/9655818.html

json和pickle:https://www.cnblogs.com/wzh313/articles/9653281.html

shutil:https://www.cnblogs.com/wzh313/articles/9142894.html

  https://www.cnblogs.com/wzh313/articles/9652139.html

ConfigParser:https://www.cnblogs.com/wzh313/articles/9650749.html

subprocess:https://www.cnblogs.com/wzh313/articles/9655885.html

loggin:https://www.cnblogs.com/wzh313/articles/9655882.html

time&datatime:https://www.cnblogs.com/wzh313/articles/9652181.html

re:https://www.cnblogs.com/wzh313/articles/9655866.html

  https://www.cnblogs.com/wzh313/articles/9656976.html

random:https://www.cnblogs.com/wzh313/articles/9160762.html

PyYaml:https://www.cnblogs.com/wzh313/articles/9610723.html

  http://pyyaml.org/wiki/PyYAMLDocumentation

xml:https://www.cnblogs.com/wzh313/articles/9653314.html

 

十、PyYaml处理

 Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation 

 

 

 

 

 

posted @ 2018-09-16 22:13  航松先生  阅读(303)  评论(0)    收藏  举报