开发中遇到的一些问题汇总

buffer中内容的decode

使用paramiko执行远程ssh命令返回后,如果用stdout读了返回的内容,对其进行解码时,会因为远端的系统语言字符集和本地不一致,导致EncodeErr错误。解决方法

def ssh_and_exec(ip,username,passwd,cmd):

    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip,22,username,passwd,timeout=5)
        stdin,stdout,stderr=ssh.exec_command(cmd)
        if stdout != None:
            #out = stdout.readlines()
            buf = stdout.read()
            ret_list=buf.decode('ascii','replace').split('\n')
            ssh.close()
            print "ssh to %s and exec:%s ok"%(ip,cmd)
            return ret_list
        if stderr != None:
            print stderr
            ssh.close()
            return None    
    except Exception :
        print "ssh to %s login:%s passwd:%s error "%(ip,username,passwd)

 

json.dumps的编码问题

json.dumps处理非ascii时,会出错,解决方法如下:

out=json.dumps(policys_dict,ensure_ascii=False)

 

不同字符集间的转换处理

先用decode统一转成unicode,再encode转成对应的字符集。

image

 

查看内存

image

 

python对象的特点

python中变量相当于C语言中的指针,=的右值是实际的对象。

string  tuple number是不可修改实参的对象。

list  dict 是可修改实参的对象。list  dict传入参后,对入参进行局部修改,可以改变实参对象的值,如果对入参进行整体对象赋值,其实是进程里生成了一个新的对象,原来实参的内容没有变化。全局变量也是如此,注意!!

image

 

打印二进制串

key_id=sip+dip+packet_id+tlen+cs
print "%s,%f" %(key_id.encode('hex'),tuple_info[key_id])

 

 

转义字符的处理

(1)双引号,单引号内,如果有特殊字符,需要加上 \ 转义符,   “””adsfa “”” 三引号注释里,可以不加

(2)不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串,如print r'\t\r' ,就打印   \t\r  

image

转载于:https://www.cnblogs.com/blue-sea-sky/p/5714950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值