Antkillerfarm Hacking V7.5

language » Python(五)

2020-12-24 :: 6718 Words

Python

PDF(续)

https://mp.weixin.qq.com/s/J-H638ZzhB-GOXMeAQ9aww

Camelot: 三行代码提取PDF表格数据

https://mp.weixin.qq.com/s/c0hszsSDS-u4z-83Y7km8Q

pdf文档解析之pdfminer

https://mp.weixin.qq.com/s/1BoBHbXXOGPZ4HK437lH4Q

6款Python特殊文本格式处理库推荐

https://mp.weixin.qq.com/s/bz7rCy0YyF1HrrHrWt9Mpw

聊聊Python操作PDF的几种方法

https://mp.weixin.qq.com/s/jzjumS2oJfFO-4SBa0qooQ

利用Python将PDF文档转为MP3音频

https://mp.weixin.qq.com/s/FmdbdAWenXWuY9s7ykVORQ

三种方法,Python轻松提取PDF中全部图片

https://mp.weixin.qq.com/s/UVKOU11dfWwP9Uyw9E400Q

如何使用python提取pdf表格及文本,并保存到excel

word & excel

安装:

pip install python-docx

文档:

https://python-docx.readthedocs.io/en/latest/

参考:

https://mp.weixin.qq.com/s/lEtE3ejBLzmm9_eo-_8NBg

处理大型Excel文件,用Python就对了!

https://mp.weixin.qq.com/s/GjG1Rc-HtLRkrNXY1pcp2Q

xlwings,让excel飞起来!

https://mp.weixin.qq.com/s/6M7aiXgcne9cbHffqpm_Lw

n种方式教你用python读写excel等数据文件

https://mp.weixin.qq.com/s/rBR4d_wyU8TKy1K9az4C-Q

从VBA到Python,Excel工作效率如何提高?

https://mp.weixin.qq.com/s/3nr8uHnRoSgs-Zu6QxGiqw

Python实现数据库一键导出为Excel表格!大大的增加了工作效率!

https://mp.weixin.qq.com/s/ZI7KDxH9z_UR2p3umBCNsA

一套代码批量编辑Word和Excel,告别工具人

https://mp.weixin.qq.com/s/4q6poyFBLgwZJPzJNX3y0g

Python操作Excel之一

https://mp.weixin.qq.com/s/NiDZfQCblcfw4XnPzBYIaQ

Python操作Excel之二

https://mp.weixin.qq.com/s/m5mrlx3V3bBblqHdBZKa6w

Python操作Word

https://mp.weixin.qq.com/s/KhtVET6AAhYWWefBnvis2Q

Word自动化排版画图

https://mp.weixin.qq.com/s/RLJAHQAheqrf8i-c8QtDtw

Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

https://mp.weixin.qq.com/s/ymPHlri3qMmTlvlWiBqsxg

用Python+Excel制作天气预报表

音乐

https://web.mit.edu/music21/

music21官网

https://mp.weixin.qq.com/s/ONZD5RGI18rLTYhzIQQbVA

用R包gm生成音乐

del

由于python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上。

if __name__=='__main__':
    a=1       #对象1被变量a引用,对象1的引用计数器为1
    b=a       #对象1被变量b引用,对象1的引用计数器加1
    c=a       #对象1被变量c引用,对象1的引用计数器加1
    del a     #删除变量a,解除a对1的引用
    del b     #删除变量b,解除b对1的引用
    print(c)  #最终变量c仍然引用1

参考:

https://blog.csdn.net/love1code/article/details/47276683

python中del的用法

python执行shell脚本

示例:

https://github.com/antkillerfarm/antkillerfarm_crazy/blob/master/python/misc/hello_cmd.py

需要注意的是shell这个选项是有讲究的。

shell=True:

args = ["ls -al ."]

shell=False:

args = ["ls","-al","."]

python调试

首先:

import pdb

然后在需要断点的地方:

pdb.set_trace()

然后直接运行脚本即可,其他命令和gdb十分相似。

pdb和gdb的差异主要在于:

1.pdb需要修改代码,而gdb不需要。

2.可以直接运行脚本进入pdb模式,而gdb需要先进入gdb环境,然后才可以运行程序。显然pdb的灵活性比较高。

参考:

https://blog.jamespan.me/2016/06/09/remote-debug-your-python-code

远程调试你的Python代码

https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/index.html

Python代码调试技巧

https://mp.weixin.qq.com/s/4pxGrn9jgp8So8JsONC-3A

别再用print调试代码了(PySnooper)

https://mp.weixin.qq.com/s/JNGtOtRW3YsLti9gVYzLcg

清华校友打造Python调试神器(Cyberbrain)

https://mp.weixin.qq.com/s/weEZEr4g8pI11Gijc-St0Q

DeBug Python代码全靠print函数?换用这个一天2K+Star的工具吧

https://mp.weixin.qq.com/s/bNW1FbUG5LNUiRmmzirgCg

别再用Print调试Python了!(Icecream)

https://mp.weixin.qq.com/s/WqDWksBDBa07s84v6R1tlA

Python里三个最高逼格的调试神器

https://mp.weixin.qq.com/s/dlMqyVy92S_dFaBAuV1RhA

Python和C/C++拓展程序的性能优化

https://mp.weixin.qq.com/s/Q5P037abid03H4-ypWa7qg

用了三年的pdb,没想到还能这么调试

SCons

blade的底层用到了SCons。后者是一个python语言写的构建工具,可用于多种编程语言程序的构建。

官网:

http://www.scons.org/

安装:

sudo apt install scons

和make类似,可以用如下方式并行编译:

scons -j 4

clean:

scons -c

使用示例:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/cpp/scons

项目的工程文件为SConstruct。

从个人角度,我认为一个好的构建工具需要具备以下特点:

  • 常见任务书写简单。换句话说就是预先内置好了大量规则。make在这一点上做的不太好,手工任务太多,以致出现了Autotools和CMake这样的辅助工具。

  • 特殊任务扩展简单。make系列工具的DSL都不是完备的语言,这一点是比不了python的。

因此,我是比较看好SCons的。

上述特点在Java的构建工具上也得到了体现,ANT书写麻烦,所以被Maven取代,而Maven扩展不便,又被Gradle挑战。

参考:

https://www.ibm.com/developerworks/cn/linux/l-cn-scons/

使用SCons轻松建造程序

https://mp.weixin.qq.com/s/3QS_9U_X2bELwLzzVfaBOQ

SCons-Python给C++做的烤饼,香!

Tkinter

Tkinter简明教程

2014年度辛星Tkinter教程第二版

Python GUI Programming Cookbook

https://mp.weixin.qq.com/s/RdnAQPAn9E8qDvtnCEgcKw

Tkinter可视化窗口

https://www.zhihu.com/question/32703639

为什么很多Python开发者写GUI不用Tkinter,而要选择PyQt和wxPython或其他?

Dear PyGui

Dear PyGui是一个轻量级的GUI框架,可以利用GPU进行渲染。

代码:

https://github.com/hoffstadt/DearPyGui

参考:

https://mp.weixin.qq.com/s/t1DT7jyKj1moU1qnrn5GiQ

好看又好用的GUI,你需要这七个Python必备库

pygame


pygame是一个python的游戏引擎。

官网:

https://www.pygame.org/

类似的引擎还有:

https://kaboomjs.com/

kaboom.js(一个JS写的引擎)

https://solar2d.com/

Solar2D(一个Lus写的引擎)

参考:

https://github.com/marblexu/PythonPlantsVsZombies

Python《植物大战僵尸》代码实现

https://mp.weixin.qq.com/s/la9srinIeibkXZEDRvv5pA

手把手教你用Python实现“坦克大战”,附详细代码!

https://mp.weixin.qq.com/s/1xXULpT36P7LTO5HDbjptg

坦克大战小游戏

https://mp.weixin.qq.com/s/EEw4x1mk0y8xsL9mORd9sA

如何用Python实现超级玛丽的界面和状态机?

https://mp.weixin.qq.com/s/HRdc5O6hT-dzx4jmgmlSYw

如何用Python实现超级玛丽的人物行走和碰撞检测?

https://mp.weixin.qq.com/s/20F0ieUjJSZp7yI7ymeJ5Q

试试在终端模拟下雪的效果呗?

Captcha

Captcha是一个Python验证码库,能够生成音频和图片验证码。

CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称. CAPTCHA的目的是区分计算机和人类的一种程序算法,是一种区分用户是计算机和人的计算程序,这种程序必须能生成并评价人类能很容易通过但计算机却通不过的测试。

代码:

https://github.com/lepture/captcha

这个库可用于生成大量有标签的验证码,是DL入门的必备工具。

参考:

https://mp.weixin.qq.com/s/m4rNUFV4VGUBI7aWv5fgbw

中文项目:快速识别验证码,CNN也能为爬虫保驾护航

https://zhuanlan.zhihu.com/p/26078299

使用深度学习来破解captcha验证码

https://mp.weixin.qq.com/s/NsaMcgufLYO3i6eG1WO_VA

我不是机器人:谷歌最新版验证码系统ReCaptcha破解已开源

https://mp.weixin.qq.com/s/fun7k1fDrB3BYG2DK-Z7wA

如何证明你是“人”还是“机器”? 揭秘验证码技术

其他类似项目还包括:

语言 名称 网址
Java JCaptcha http://jcaptcha.sourceforge.net/
Java SimpleCaptcha http://simplecaptcha.sourceforge.net/
Java kcaptcha http://captcha.ru/en/kcaptcha/
Java patchca https://github.com/pusuo/patchca
Java SkewPassImage http://skewpassim.sourceforge.net/
Java Internet Captcha http://www.icaptcha.com/
Java Cage http://akiraly.github.io/cage/

Celery

Celery是一个专注于实时处理和任务调度的分布式任务队列,可用于执行定时任务。

参考:

https://zhuanlan.zhihu.com/p/22304455

使用Celery

https://mp.weixin.qq.com/s/jdYiqJ98PztD7Ueu_o3Z4Q

任务队列神器:Celery入门到进阶指南

tqdm

tqdm是一个快速,可扩展的进度条。

代码:

https://github.com/tqdm/tqdm

示例:

from tqdm import tqdm
for i in tqdm(range(9)):
    ...

其实还有一个更简单的办法:

print("\r" + "xxx", end=""):这样的话会先把console里面当前的行清除掉、再输出xxx。

参考:

https://mp.weixin.qq.com/s/1YZ7-i3X8Cb2LYEuWtd1KA

给Python代码加上酷炫进度条的几种姿势

https://mp.weixin.qq.com/s/OVb4g1KzIsxgMKjJk_hG6A

在Python中妥善使用进度条

https://mp.weixin.qq.com/s/_rCg_uFD07eZw4QLtD-fzA

Python竟然能做这样的进度条

https://mp.weixin.qq.com/s/nGOCderiyOXsHkMZwIgpoA

酷炫的Python进度条开源库:alive-progress

细节

python有个叫做attr的包,还有一个叫做attrs的包,然而import attr实际上用的是attrs

二进制码流 -> 十六进制字符串:

import binascii
hex_digits = binascii.b2a_hex(bin_stream)

利用动态语言的特点,在运行时替换指定函数的代码,达到实时更改函数行为的效果,这就叫做“打Moneky Patch”。

https://blog.csdn.net/yushuaigee/article/details/117031190

彻底弄懂Python中的Moneky Patch

Fork me on GitHub