你是如何学习 Python 的?

2016-09-19 09:34:38 +08:00
 newbieo0O

如何从小白到入门,再通往大牛? 来分享一下学习的途径。

1876 次点击
所在节点    Python
5 条回复
kindjeff
2016-09-19 09:50:24 +08:00
需求驱动学习。两年前就粗略的学过,用来计算一堆一堆物理实验的数据;后来看了廖雪峰的教程,开始作为主力语言来用;要处理或者生成一些图片,就去看 Pillow 的文档;要爬东西,学了 requests 和 bs ;要多线程 /协程,去看了 gevent 和 3.5 的 asyncio 库。还有要帮人做网站要自动发帖这样下来各种网络协议也看了。 asyncio 库里的 StreamReader 读出来的 gzip 过的数据解压不能,这两天在看压缩的书……
sivacohan
2016-09-19 22:13:44 +08:00
@kindjeff gzip 如果是 http 的话,解压时 window size ,写 31 。
jimzhong
2016-09-19 22:16:25 +08:00
需求驱动啊,先看官方文档,然后根据你的需求继续学习相关的库。
kindjeff
2016-09-19 23:08:21 +08:00
@sivacohan 谢谢解释,但是不太懂。不知道为什么,用 asyncio 的 StreamReader 读入的数据是这样的
![]( http://o6lazlt4g.bkt.clouddn.com/1.png)
用 http.client 读出来的是这样
![]( http://o6lazlt4g.bkt.clouddn.com/2.png)
很像但是不一样~~后者可以直接 gzip.decompress()出来,前者不行。
sivacohan
2016-09-20 01:19:16 +08:00
@kindjeff

第一个是 stream 里面的实际的东西。第二个应该是被处理过了。
第二个不说了,因为不知道具体怎么处理的。说第一个。

你这个响应应该是 content-encoding 为 gzip , transfer-encoding 为 chunked 。
gzip 不用说了, body 里的东西解压就可以了,我说的 31 是 decompress 的第二个参数。
你解压不了是因为这是 chunked 的数据,格式如下

该 trunk 的字节数\ r \ n
对应的 trunk 数据\ r \ n

trunk 包以 0 \ r \ n \ r \ n 结束

RFC2616 里面有具体关于 trunk 的说明,建议核对一下,记得是这样,可能有误差。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307158

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX