1. 代码格式化
1.1. autopep8
pip install autopep8
简单使用:
autopep8 -aa <filename>
-aa
表示代码侵入性级别。这里解释一下侵入性aggressive。当不使用
--aggressive
选项时,autopep8
只会对空格进行格式化 ,不会修改你的其他语法。当使用1个--aggressive时,表示侵入性级别1,会修改一些不推荐的语法。比如
x == None
会被修改为x is None
。但这有一定的风险,可能会改变原来程序的语义,比如例子中,x如果改写了__eq__
方法,就会有问题。当使用2个--aggressive时,侵入性级别增加1,
if x == True:
之类的代码会被改为if x:
。
个人建议,在自己的编辑器中使用flake8(也使用了pycodestyle)等插件进行提示即可,不要依赖于autopep8来修改源码。
--max-line-length=n
可以设置每行代码的最长字符限制,默认是79。社区中很多人反映79个字符的长度限制应该放宽,毕竟这是历史原因导致的。
--in-place
(缩写-i)不再输入格式化后的代码,而是将格式化直接应用到源文件上,改写源文件。
1.2. YAPF
个人推荐使用 yapf
来取代 autopep8
。
不同于autopep8、pep8ify之类的Python代码格式化程序: 它们的目的是消除Python代码中不符合PEP-8规范的错误。符合规范的代码不会被修改。然而,符合PEP-8规范的代码,不一定是好看的代码。
yapf使用clang-format算法来实现代码的重新排版,即便代码本来就符合规范。
pip install yapf
安装后,你可以试着使用 yapf <filename>
来格式化前面例子中的丑陋代码。
1.3. docformatter
pip install --upgrade docformatter
简单使用: docformatter --in-place example.py
2. 视觉相关
2.1. pyzbar, 条码(二维码)识别
在Ubuntu或树莓派上安装Zbar
$ sudo apt-get install libzbar0
$ pip3 install pyzbar
使用Demo
from pyzbar import pyzbar
barcodes = pyzbar.decode(im_qr)
for barcode in barcodes:
# x, y, w, h = barcode.rect # 获取条码位置
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
2.2. tesserocr
2.2.1. Linux平台
sudo apt install libleptonica-dev libtesseract-dev
pip3 install tesserocr
2.2.2. Windows
下载whl文件: github: tesserocr-windows_build
如出现:
安装whl文件: pip install xxx.whl