36、掌握字符串的基本用法
都是些很常规的东西,strip、split、zfill等
37、按需选择sort或sorted
两者主要区别
- sort作用于原列表
- sorted作用于任意对象,并返回新对象
38、使用copy模块深拷贝对象
- 浅拷贝只拷贝地址,会对原内容进行修改,用的是copy.copy
- 深拷贝拷贝了引用和引用的对象,用的是copy.deepcopy
39、用counter进行计数统计
counter属于字典类的容器对象,更优雅
- update用于更新
- subtract用于元素统计值相减
40、深入掌握configparser
笔者还没接触过这个库
用于配置文件
这里讲的是些需要注意的小地方和技巧
先记一笔,以后用到再说
41、使用argparse处理命令行参数
这个还是老了
现在用的是docopt
但了解了下几个库的递进,还是有点意思的
42、使用pandas处理大型csv文件
csv模块在处理大型csv文件时能力不足
用pandas
不过现在数据处理大都是用pandas的
43、一般情况使用ElementTree解析XML
现在都是这么做的
44、模块pickle优劣
这个模块笔者没接触过
用于序列化
优点:
- 接口简单使用容易
- 存储格式有通用性
- 支持数据类型广泛
- 模块可以进行扩展
- 自动维护对象引用
限制:
- 不能保证操作的原子性
- 存在安全性问题
- 不同语言之间兼容问题
45、json
书上是对json进行了简单介绍
笔者前段时间学习爬虫刚好用过json
这是现在流行的数据存储交换用的库
46、用traceback获取栈信息
作为开发人员和维护人员
traceback可以定位异常
一篇不错的参考
47、用logging记录日志信息
没多的好说的
工程上的常规操作
和traceback结合使用
48、使用threading编写多线程
巧了,笔者刚在学爬虫的时候学了多线程threading
书上写了几个简单例子
49、使用queue使得多线程编程更安全
这个笔者学到了
之前学爬虫的时候用到了
但是当时没多注意
书上的一个例子如下:
import os
import Queue
import threading
import urllib2
class DownloadThread(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self.queue=queue
def run(self):
while True:
url = self.queue.get()
print(slef.name+"begin download"+url)
self.download_file(url)
self.queue.task_done()
print(slef.name+"download completed")
def download_file(self,url):
urlhandler=urllib2.urlopen(url)
frame=os.path.basename(url)+".html"
with open(fname,"wb") as f:
while True:
chunk=urlhandler.read(1024)
if not chunk: break
f.write(chunk)
if __name__=="__main__":
urls=["http://wiki.python.org/moin/WebProgramming",
"https://createspace.com/3611970"
]
queue=Queue.Queue()
for i in range(5):
t=DownloadThread(queue)
t.setDaemon(True)
t.start
for url in urls:
queue.put(url)
queue.join()
结语
有几个建议不错
有几个还是书比较老了不适用了