zoukankan      html  css  js  c++  java
  • re模块,paramiko模块

    re模块

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

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

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

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

    正则表达式匹配规则

    python中的re模块

    pattern = re.compile(r"d")   # r表示字符串不受
    ,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()
    
  • 相关阅读:
    使用Nodejs+mongodb开发地图瓦片服务器
    深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制
    Hibernate查询出现java.lang.IllegalArgumentException异常解决方法
    tilecache2.11在windows apache2.22安装部署
    OpenLayers调用ArcGIS Server发布的WFS服务
    无法启动ArcSDE服务
    AndroidManifest修改重打包全过程
    Java正确转换html编码
    pip 异常问题
    python 从数据库取回来的数据中文显示为乱码
  • 原文地址:https://www.cnblogs.com/x54256/p/8296398.html
Copyright © 2011-2022 走看看