python 2.*和3.*的变化
1、urllib2是python自带的模块,在python3.x中被改为urllib.request,如
- <span style="font-size:12px;">url = "http://music.baidu.com/album/all?order=time&style=pop"
- html = urllib.request.urlopen(url).read()
- </span>
2、raw_input 和 input
在 Python 版本 2.x 中,raw_input() 会从标准输入(sys.stdin)读取一个输入并返回一个字符串,且尾部的换行符从末尾移除
- <span style="font-size:12px;">>>>quest = raw_input("What is your quest? ")
- What is your quest? To seek the holy grail.
- </span>
与之不同,Python 2.x 中的 input() 函数需要的是一个有效的 Python 表达式,比如 3+5
最初,曾有人建议将 input() 和 raw_input() 从 Python 内置的名称空间一并删除,因此就需要进行导入来获得输入能力。这从方法上就不对;因为,简单键入:
>>>quest = input("What is your quest?")
将会变为:
- <span style="font-size:12px;">>>>import sys
- >>>print("What is your quest?")
- >>>quest = sys.stdin.readline()
- </span>
对于一个简单输入而言,这太过繁琐,并且对于一个新手,这未免太难理解。往往需要向他们讲述模块 和导入 究竟是怎么回事、字符串输出以及句点操作符又是如何工作的(如此麻烦的话,与 Java™ 语言就没什么差别了)。所以,在 Python 3 内,将 raw_input() 重命名为 input(),这样一来,无须导入也能从标准输入获得数据了。如果您需要保留版本 2.x 的 input() 功能,可以使用 eval(input()),效果基本相同。
3、can't use a string pattern on a bytes-like object
3.0现在的参数更改了,现在读取的是bytes-like的,但参数要求是chart-like的,故定义pattern的时候在前面加一个小b,表示要操作的对象是bytes类型就可以了,,如
- url = "http://music.baidu.com/album/all?order=time&style=pop"
- html = urllib.request.urlopen(url).read()
- uri = re.findall(b'/song/d+',html,re.M)
s.encode(encoding) -> bytes
b.decode(encoding) -> str
bytes 就是一堆字节,str 是字符串;你把字符串按某种编码编码之后就成了一堆字节,正确地解码后就成了字符串。
eg1:
# apps.append(apk.split(":")[-1].split("=")[0])报错:TypeError: 'str' does not support the buffer interface
按照下面做一个转换,就fix了
s=apk.decode("GBK").split(":")[-1].split("=")[0]
apps.append(s)
eg2:
out = shell("dumpsys window w | %s \/ | %s name=" %(find_util, find_util)).stdout.read()
return pattern.findall(out)[0]
报错:can't use a string pattern on a bytes-like object
按照下面做一个转换,就fix了
out = shell("dumpsys window w | %s \/ | %s name=" %(find_util, find_util)).stdout.read().decode("GBK")
python 2.*和3.*的变化的更多相关文章
- Python如何爬取实时变化的WebSocket数据【华为云技术分享】
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- Python如何爬取实时变化的WebSocket数据
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- 关于老猿Python系列文章发布网址变化的说明
老猿Python系列文章最开始在新浪发布,后逐渐开通了CSDN.博客园和简书三个网址,但老猿一来工作忙,二来Python需要学习的内容太多,因此实在没时间同时维护这么多博客,事实上除了CSDN其他网站 ...
- Python监控目录和文件变化
一.os.listdir import os, time path_to_watch = "." before = dict ([(f, None) for f in os.lis ...
- Selenium+python操作id为动态变化的frame(iframe)
先定位到一组frame:ele = dr.find_elements_by_tag_name('iframe')此时获得一组frame 再通过index取需要切进去的frame并取到该frame的id ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python 去剑式
Python 去剑式 种种变化,用以体演总诀.共有三百六十种变化. 用以破解普天下各门各派的剑法.「破剑式」虽只一式,但其中于天下各门各派剑法要义兼收并蓄:虽说「无招」却是以普天下剑法之招数为根基,因 ...
- 已解决】Sublime中运行带input或raw_input的Python代码出错:EOFError: EOF when reading a line(转)
[问题] 在折腾: [已解决]Sublime Text 2中运行Python程序出错:The system cannot find the file specified 的过程中,虽然解决了找不到py ...
- 使用2to3将代码移植到Python 3-转
http://m.blog.csdn.net/blog/merryken/9104199# ❝ Life is pleasant. Death is peaceful. It’s the transi ...
随机推荐
- 13. OPTIMIZER_TRACE
13. OPTIMIZER_TRACE OPTIMIZER_TRACE表提供由跟踪语句的优化程序跟踪功能生成的信息. 要启用跟踪,请使用optimizer_trace系统变量. 有关详细信息,请参阅M ...
- POJ 3310 Caterpillar(图的度的判定)
题意: 给定一幅图, 问符不符合一下两个条件: (1) 图中没有环 (2)图中存在一条链, 点要么在链上, 要么是链上点的邻居. 分析: 建图,记录度数, 去掉所有度为1的点, 然后看看剩下是否是有2 ...
- Java学习之分支结构---判断语句:if语句和switch语句
一个if语句包含一个布尔表达式和一条或多条语句,if 语句的用语法如下:if 语句 if(布尔表达式) { //如果布尔表达式为true将执行的语句 },如果布尔表达式的值为 true,则执行 if ...
- Python列表的切片操作
在Python列表中分片是一个很重要的操作,有以下几个注意的点: 切片时不包含最后一位,如下例子中,要取最后一位,从0开始算应该是到7就可以取,但是需要8才能取 2. 默认取值步长为1,即每 ...
- HDU3183A Magic Lamp,和NYOJ最大的数一样
A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- Linux CentOS命令行界面字体重复问题解决记录
问题描述: 安装完CentOS 6.5 mini版之后,安装图形界面,启动之后出现如下问题,字体有重复 应该是因为字体原因, 我的解决方法: yum -y install dejavu-sans-* ...
- 兴奋剂检查(vijos 1426)
背景 北京奥运会开幕了,这是中国人的骄傲和自豪,中国健儿在运动场上已经创造了一个又一个辉煌,super pig也不例外……………… 描述 虽然兴奋剂是奥运会及其他重要比赛的禁药,是禁止服用的.但是运动 ...
- BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉
L<=1000000的土地上用长度在2*A~2*B的线段覆盖所有点,且给定n<=1000个区间,每个区间上只允许有一条线段,求最少多少线段,无解-1. f[i]表示填前i个土地最少线段,f ...
- hiho一下 第四十五周 博弈游戏·Nim游戏·二 [ 博弈 ]
传送门 题目1 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面 ...
- poj2243+poj1915骑士问题
2243是骑士问题,八个格子的,BFS,因为要最短路经,所以没有用A*,A*跑不出来,太慢了,因为要搜索到所有解啊!一直更新最优,而BFS,一层一层搜索,第一次得到的便是最短的了!300格子,标记的话 ...