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()