本文整理了本人遇到的一些tricks。主要包括:
- pycharm快捷键整理
- 爬虫中的日志记录(logging)、取消SSL警告、字符过滤(re.sub)与查找(find)、文件删除(os)与文件保存(pickle)、词云(wordcloud)的使用
- 图像处理的部分基本操作(PIL,numpy)。
0 pycharm 快捷键
注释/反注释
Ctrl+斜杠
,也就是 Ctrl + /
注释与反注释都是这个组合键。
块注释
Ctrl+Shift+斜杠
格式化代码
ctrl + alt + F
: 格式化代码(用了JetBrains的IDE之后就习惯性地格式化一下),代码规范化。
复制当前行
Ctrl + D
复制当前行
另起一行
shift + enter
: 向下另起一行,光标在行内任意位置都能另起一行,且不破坏当行结构ctrl + alt + enter
: 向上另起一行
查看注释
Ctrl + q
: help 查注释,查询documentation
搜索功能
ctrl + shift + a
: 搜索功能: 搜索IDE功能,比如想看看这个文件的历史,就键入history 可以找到 Local history
万能提示键
ctrl + alt + space
: 万能提示键(在Keymap中搜索basic可以找到并修改它)PyCharm的会根据上下文提供补全。
run相关的快捷键
根据具体设置可能略有差异,笔者采用的是
VS风格(可在File->Settings->Keymap
中设置)的快捷键。ctrl + F9
: run the current file (跑当前页面的程序)F9
: resume the program (中断后)重新开始程序ctrl + F5
: run the specific program(直接跑上一个程序)F5
: debug(弹出debug目录,自行选择运行的文件)alt + shift + F10
: 运行程序(弹出run目录)
其他技巧
ctrl + shift + 数字键
与 ctrl + 数字键
: 书签功能Ctrl + 鼠标点击
: 查看内置函数啥的alt + 上下箭头
: preview/next method (def/class)
debug的时候可以在断点打开Python console然后改变量值Ctrl+ B
和shift + →
,查看源码时很方便,至少在vim下看库的源码没那么容易。对Python程序员而言,看源码很重要shift + F6
: 重命名,这太重要了,vim没有吧。即使有,那它也没法重构Flask和Django的template下的指令吧。
1 python信息同时输出到控制台与文件
1.1 问题
python编程中,往往需要将结果用print等输出,如果希望输出既可以显示到IDE的屏幕上,也能存到文件中(如txt)中,该怎么办呢?
1.2 解决方案
可通过日志logging
模块输出信息到文件或屏幕。但可能要设置log的level或输出端,对于同时需要记录debug error
等信息的较为合适,官方教程推荐学习用更规范的logger来操作。
例如,可参考来自官网的这段代码。
其中的level=logging.DEBUG
会显示Debug调试信息,若想显示普通的输出信息,可以换成level=logging.INFO
。
程度 | 使用场景 |
---|---|
DEBUG | 获得诊断问题是具体的信息 |
INFO | 确认程序是否按正常工作 |
WARNING | 在程序还正常运行时获取发生的意外的信息,这可能会在之后引发异常(例如磁盘空间不足) |
ERROR | 获取程序某些功能无法正常调用这类严重异常的信息 |
CRITICAL | 获取程序无法继续运行的这类最严重异常信息 |
1.3 改变默认输出信息的格式
|
|
在python console
中直接打印以下输出:
|
|
2 Python中将打印输出导向日志文件
利用sys.stdout
将print行导向到你定义的日志文件中,例如:
|
|
这样子只会打印到日志文件,而控制台没有输出了,笔者一般不采用这种方法。
3 python3使用requests请求HTTPS取消SSL验证警告
3.1 问题描述
使用requests
库请求HTTPS
时,因为忽略证书验证,导致每次运行时都会报错(警告):
3.2 解决方法
虽然这并不影响结果的正确,但是这个提示一直存在,看着是真的别扭,尤其需要输出到报告或者是日志的时候。代码加入下面两行,取消这个警告。
添加如下的这两行代码:
|
|
python3也可以的。我的pycharm中会显示找不到该库,不过没问题,依旧可以跑,应该是pycharm本身的问题。
4. python过滤中文、英文标点特殊符号
4.1 垃圾邮件过滤实例
下面是一封垃圾邮件的过滤实例:
|
|
邮件中的“!?。、
”都是中文的,而“/.”是英文的
下面是采用re正则项过滤方式:
|
|
4.2 目录名称过滤实例
此外,比如说目录命名时,也需要过滤掉/|
等,如下:
5. Markdown之表格table的处理
插入表格代码如下:
发现table加了个class属性,如果只是table标签 将不起作用。
table-bordered:带圆角边框和竖线
table-striped:奇偶行颜色不同
table-condensed:压缩行距
除了以上另外还有其他可供选择:
1、如果需要表头跟内容不一样,可以将<td>
表头内容</td>
换成<th>
表头内容</th>
。
2、如果表格内文需要换行,可以在要换行的内容后加入<br>
,后面的内容就会跑到下一行。
3、如果内文中有代码,需要特别显示,可使用:<code>代码</code>
。
4、如果表格中有需要设为斜体的内容,可使用:<I>要设为斜体的内容</I>
。
5、如果有跨行或者跨列的单元格,可用<th colspan="跨列数">内容</th>
或rowspan
。
6、如果要调整某一列的宽度,可使用:<th width="宽度值或百分比">表头内容</th>
。
6. 用numpy打开图像和保存图像
|
|
补充用opencv打开和保存图像:
|
|
7. PIL.Image转换为OpenCV支持的Image格式
可参考:http://www.mobibrw.com/2017/7381
后来放弃了。不太方便。
8. 使用pickle把数据保存到文件
8.1 实例一
使用pickle模块从文件中重构python对象。
8.2 实例二
其中,friend是从网页获得的数据,先保存下来,以备后续处理。
读取保存的文件,用于后续处理。
|
|
9. 解决Python词云库wordcloud不显示中文的问题
9.1 安装
安装命令:
pip install wordcloud
9.2 解决方案
实例代码:
10. PIL库图片基本操作
1.打开图片
注:有些图片名称是包含中文的,就需要在“”前加上u,例:
2.展示图片
|
|
3.保存图片
说明:img为一个图片,存为一个名叫img1的图片,格式为png。后面的png不写也可以,直接按照文件名的后缀.png存为相应格式了。
4.旋转图片rotate
fixedIm=img.rotate(90)
fixedIm.save("fixedIm.png","png")
说明:fixedIm=img.rotate(90)
,将图片img逆时针旋转90度,存到fixedIm中。
更多操作可参考:
http://www.cnblogs.com/meitian/p/3699223.html
python删除文件
|
|
递归删除目录和文件(类似DOS命令DeleteTree):
参考自:python 删除文件
Python3 find()方法
描述
find()
方法检测字符串中是否包含子字符串str,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
语法
find()方法语法:
str.find(str, beg=0, end=len(string))
参数
str:指定检索的字符串
beg:开始索引,默认为0。
end:结束索引,默认为字符串的长度。
返回值
如果包含子字符串返回开始的索引值,否则返回-1。
实例
以下实例展示了find()方法的实例(Python 3.0+):
|
|
以上实例输出结果如下:
7
7
-1
实例(Python 3.0+)