1、python一秒钟启动一个文件下载服务器
不管是已经工作了的同学还是正在上学的同学,平常总有发送文件的需求场景,文件传送本身并不复杂,但是有时总是需要与人沟通的成本,不如直接将整个数据目录分享出去,任其选择~
操作非常简单,进入到响应数据目录之后,一行命令即可开启一个Python内置的下载服务器
# 没有平台区别,默认端口8000,公网测试ECS服务器也成功了 # python2: python -m SimpleHTTPServer [指定端口] # python3: python -m http.server [指定端口]
2、使用标准库的pdb/开源的ipdb调试代码
对于很多刚入门编程的初学者来说,比如我,不知道如何对代码进行单步调试,遇到问题的时候只能通过print函数打印变量中间值这种低效的方式进行调试。
对于Python来说,如果总是写一些短小的代码可能确实不需要调试器,但是,随着代码量的增大、逻辑变得复杂,如还是用print函数打印变量中间值的方式进行调试,不但效率低下,而且难以快速定位问题,所以调试器就变得非常重要了,这里介绍两个我接触到的调试器
pdb/ipdb
pdb
是python自带的一个库,为Python程序提供了一种交互式的源代码调试功能,包含了设置断点
、单步调试
、查看源码
、查看程序堆栈
等。
ipdb
是一个开源的Python调试器,它和pdb有相同的接口,也就是说两者的使用方法几乎没有不同。但是,就相当于Ipython
之于python
,相对于pdb
,ipdb
具有语法高亮
、tab补全
、更友好的堆栈信息
等高级功能。因为
pdb
是Python的标准库,所以不用安装就可以直接使用,而ipdb
是第三方库,需要先使用pip
安装之后才能使用。
这里先给出pdb/ipdb的部分调试命令
|-------|-------|-------|
命令 | 缩写 | 说明 |
---|---|---|
break | b | 设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点 |
continue | cont/c | 让程序继续执行,直至遇到下一个断点 |
next | n | 执行下一行,如果下一行语句是一个函数调用,用n是不会进入被调用的函数体中的 |
step | s | 执行下一行,如果下一行语句是一个函数调用,用s会进入被调用的函数体中的 |
where | bt/w | 打印堆栈轨迹 |
enable | - | 启用禁用的断电 |
disable | - | 禁用启用的断电 |
pp/p | - | 最有用的命令之一,打印变量或表达式 |
lsit | l | 根据参数值打印源码 |
up | u | 移动到上一层堆栈 |
down | d | 移动到下一层堆栈 |
restart | run | 重新开始调试 |
args | a | 打印函数参数 |
clear | cl | 清除所有的断电 |
return | r | 执行到当前函数结束 |
有两种不同的方式启动Python调试器:
2.1 一种是直接在命令行参数
指定使用pdb/ipdb模块
启动Python文件
python -m pdb/ipdb test_ipdb.py
从图中可以非常清晰的看到通过命令行方式启动
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)
相比
pdb
,就单说ipdb
的代码高亮就让我觉得强不少,还不说别的高级功能
4、pip search
报错
"RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future
而我的本意只是想看看包
kubernetes
现在都有哪些版本而已,可以用pip-search
替换,该包名叫pip-search
,命令是pip_search
5、pip 查看安装包的版本列表
pip install package_name==