re模块,paramiko模块

re模块

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  • 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
  • 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。

正则表达式匹配规则

python中的re模块

pattern = re.compile(r"\d")   # r表示字符串不受\n,\d,\w等转义字符影响,u表示是unicode字符串

pattern.match(str,begin,end)	# 起始位置,终止位置(是以切片的形式顾头不顾尾)    
# 从起始位置开始往后找,返回第一个符合规则的(返回的是match对象),只匹配一次

pattern.search(str,begin,end)
# 从随机位置开始往后找,返回第一个符合规则的(返回的也是match对象),只匹配一次

pattern.findall(str,begin,end)
# 匹配全部字符串,返回列表

pattern.split(str,count)	# 切割次数
# 分割字符串

pattern.sub('替换文字',"字符串")

re.I ==> 忽略大小写    re.S ==> 全文匹配

用法

match:从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None

1)match(模式,搜索字符串,匹配模式)

>>> r = re.match("\d+",'1234sdacsazc')
>>> r.group()
'1234'
>>> r.group(0)
'1234'

2)pattern=re.compile(模式)

  m=pattern.match("查询字符串")

search:浏览整个字符串去匹配第一个,未匹配成功返回None

search(pattern, string, flags=0)

# pattern: 正则模型
# string : 要匹配的字符串
# flags  : 匹配模式

findall:获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;

findall(pattern, string, flags=0)

# pattern: 正则模型
# string : 要匹配的字符串
# flags  : 匹配模式

split:根据正则匹配分割字符串

split(pattern, string, maxsplit=0, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# maxsplit:指定分割个数
# flags  : 匹配模式

sub:替换匹配成功的指定位置字符串

sub(pattern, repl, string, count=0, flags=0)
# pattern: 正则模型
# repl   : 要替换的字符串或可执行对象
# string : 要匹配的字符串
# count  : 指定匹配个数
# flags  : 匹配模式

paramiko模块

1)创建ssh连接

import paramiko

ssh = paramiko.SSHClient()      # 实例化ssh连接客户端
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   # 允许连接不在know_hosts文件中的主机

ssh.connect('ip地址',22,'用户名','密码')     # 创建ssh连接

stdin, stdout, stderr = ssh.exec_command("Linux命令")     # 输入,输出,错误

print(stdout.readlines())    # 打印输出,列表形式

ssh.close()     # 关闭ssh链接

小Tips:

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。从而导致无法登录。
2)从服务器上download文件

import paramiko

t = paramiko.Transport(('IP地址', 22))
t.connect(username= '用户名', password = '密码')

sftp = paramiko.SFTPClient.from_transport(t)    # 创建sftp连接

remotepath ='./01.py'   # 网络路径

localpath ='./00.py'    # 本地路径
sftp.get(remotepath, localpath)     # get文件

t.close()   # 关闭sftp连接

3)上传文件到服务器

import paramiko

t = paramiko.Transport(("ip地址",22))
t.connect(username = "用户名", password = "口令")

sftp = paramiko.SFTPClient.from_transport(t)

remotepath='./new.xml'

localpath='./old.xml'

sftp.put(localpath,remotepath)

t.close()

 

posted @ 2017-10-01 14:21  想54256  阅读(246)  评论(0编辑  收藏  举报