python3.x入手,修改了2.x的代码兼容3.x

    搜索python教程,好几次都看到一个关于对比java和python代码的简洁性。作为java出身的我,自然就想敲一下看看python到底好在哪里。

    可惜呢。按照文章介绍,敲出来的代码运行的时候报错。o(╯□╰)o

    看了一下,python3.x 的print方法为 print(); 而不是print “ ”; 了。略囧

    其次,3.x对str的处理也不一样了,3.x执行的是byte,不同于2.x的ascii,所以对str到字节流的时候要encode一下,输出流要decode一下。

   代码变为这样:

strstring='ping 121.250.218.'+str(begin)+'\n'
p.stdin.write(strstring.encode())
print("exe result:"+p.stdout.read().decode("gbk"))  

 对,顺便提醒:cmd的输出要用gbk解码而不是utf8解码。

如果不加解码的话就会变为 /x01-/xff 这样的字节流了~

附上完整代码:

import subprocess

cmd="cmd.exe"
begin=240
end=255
while begin<end:
    p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,
                       stdin=subprocess.PIPE,stderr=subprocess.PIPE)
    strstring='ping 121.250.218.'+str(begin)+'\n'
    begin=begin+1
    p.stdin.write(strstring.encode())
    p.stdin.close()
    p.wait()
    print("exe result:"+p.stdout.read().decode("gbk"))    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值