Python 小技巧

Python 小技巧

Scroll Down

1、python一秒钟启动一个文件下载服务器

不管是已经工作了的同学还是正在上学的同学,平常总有发送文件的需求场景,文件传送本身并不复杂,但是有时总是需要与人沟通的成本,不如直接将整个数据目录分享出去,任其选择~

操作非常简单,进入到响应数据目录之后,一行命令即可开启一个Python内置的下载服务器

# 没有平台区别,默认端口8000,公网测试ECS服务器也成功了

# python2:
 python -m SimpleHTTPServer [指定端口]

# python3:
 python -m http.server [指定端口]

image.png

image.png

image.png

image.png

2、使用标准库的pdb/开源的ipdb调试代码

对于很多刚入门编程的初学者来说,比如我,不知道如何对代码进行单步调试,遇到问题的时候只能通过print函数打印变量中间值这种低效的方式进行调试。

对于Python来说,如果总是写一些短小的代码可能确实不需要调试器,但是,随着代码量的增大、逻辑变得复杂,如还是用print函数打印变量中间值的方式进行调试,不但效率低下,而且难以快速定位问题,所以调试器就变得非常重要了,这里介绍两个我接触到的调试器pdb/ipdb

pdb是python自带的一个库,为Python程序提供了一种交互式的源代码调试功能,包含了设置断点单步调试查看源码查看程序堆栈等。

ipdb是一个开源的Python调试器,它和pdb有相同的接口,也就是说两者的使用方法几乎没有不同。但是,就相当于Ipython之于python,相对于pdbipdb具有语法高亮tab补全更友好的堆栈信息等高级功能。

因为pdb是Python的标准库,所以不用安装就可以直接使用,而ipdb是第三方库,需要先使用pip安装之后才能使用。

这里先给出pdb/ipdb的部分调试命令
|-------|-------|-------|

命令缩写说明
breakb设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点
continuecont/c让程序继续执行,直至遇到下一个断点
nextn执行下一行,如果下一行语句是一个函数调用,用n是不会进入被调用的函数体中的
steps执行下一行,如果下一行语句是一个函数调用,用s会进入被调用的函数体中的
wherebt/w打印堆栈轨迹
enable-启用禁用的断电
disable-禁用启用的断电
pp/p-最有用的命令之一,打印变量或表达式
lsitl根据参数值打印源码
upu移动到上一层堆栈
downd移动到下一层堆栈
restartrun重新开始调试
argsa打印函数参数
clearcl清除所有的断电
returnr执行到当前函数结束

有两种不同的方式启动Python调试器:

2.1 一种是直接在命令行参数指定使用pdb/ipdb模块启动Python文件
python -m pdb/ipdb test_ipdb.py

image.png

image.png

从图中可以非常清晰的看到通过命令行方式启动ipdb,它会直接跳转到程序执行的第一行,输入一次next向下执行一行

2.2 另一种方法是在Python代码中调用pdb/ipdb模块的set_trace方法设置一个断点,当程序运行至断点时,将会暂停主席那个并打开pdb/ipdb调试器
import ipdb


name = ["zhi", "123", "567"]
for i in name:
   ipdb.set_trace()
   print(i)

image.png

相比 pdb,就单说ipdb的代码高亮就让我觉得强不少,还不说别的高级功能
image.png

4、pip search报错

"RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future

image.png

而我的本意只是想看看包kubernetes现在都有哪些版本而已,可以用pip-search替换,该包名叫pip-search,命令是pip_search

image.png

image.png

5、pip 查看安装包的版本列表

pip install package_name== 

image.png