本仓库的意义
本仓库记录了我学习Python过程中编写的大部分代码,创建之初是想将编写的Python代码收集起来,防止丢失和重复编写。大部分代码,都是为了解决工作中遇到的实际问题。
最近几年,随着大数据、人工智能的火热,使用Python编程的小伙伴越来越多。我有幸在多年前接触到Python,知道一点皮毛。身边的同事想学Python,但无从下手。我就把这个仓库的代码和文档完善完善,让它发挥点价值吧。
我是如何接触Python的
我第一次接触Python,当时刚毕业,来到一家公司,公司里有一个技术很好的前辈,我听到他和其他同事讨论Python语言。我以前只会C/C++,第一次听说大蟒蛇语言,充满了好奇,就去搜索了一下,我还请教他,看他怎么编写的,后来问他要了一些他写过的代码,拿来学习。前辈也很不错,他喜欢别人和他探讨技术问题,慢慢地我也了解了一点Python的知识。
再后来,我发现用Python处理工作中的一些需求还是挺方便的,写起来很带劲,用很少的代码就能实现其他语言要写一大堆的功能。而且Python的语法非常优雅,就好像是在写伪代码,伪代码写好了,功能也就实现了,这种感觉非常棒,如果是一个新手,你会觉得很有满足感。在这个过程中,我陆续用Python编写过文本处理、文件解析、TCP Socket收发请求、发送监控邮件、excel处理、网站爬虫等功能。
如果想直接进入实战环节,请点击: 跳转到案例实战章节
如何安装Python
这份教程旨在帮助习惯了 Miniconda 的开发者快速平滑地迁移到 uv。在 2026 年,uv 已经成为 Python 生态中公认的最快、最稳定的“瑞士军刀”。
从 Miniconda 迁移到 uv:现代化 Python 开发指南
1. 为什么弃用 Conda 转向 uv?
维度 Miniconda (旧时代) uv (新标准) 速度 安装包时常需要数分钟解析依赖 快 10-100 倍,几乎瞬时完成 空间 每个环境重复下载包,动辄数 GB 全局缓存+硬链接,基本不占额外空间 稳定性 依赖解析可能陷入死循环 PubGrub 算法,解析逻辑极其严密 管理方式 需手动 conda activate 环境 声明式管理,uv run 自动处理环境
2. 安装与初始配置
安装 uv 在终端执行以下命令(无需预装 Python):
macOS / Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell): powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
(可选) 在 Conda 环境中使用 uv 加速 如果你依然需要 Conda 管理 CUDA 等非 Python 依赖,可以只用 uv 替换 pip:
Bash
conda activate myenv uv pip install requests # 比 pip install 快得多
3. 核心工作流:从零开始一个项目
第一步:初始化
进入你的项目目录,运行:
Bash
uv init 这会生成 pyproject.toml(配置文件)和 .python-version(声明版本)。
第二步:管理 Python 版本
不再需要 conda create -n env python=3.10。
锁定版本: uv python pin 3.12(若本地没有,uv 会自动下载)。
查看已安装版本: uv python list。
####第三步:添加依赖包 Bash
uv add pandas numpy # 添加生产依赖 uv add --dev pytest # 添加开发依赖(如测试工具) 注意: 执行后会自动生成 uv.lock 文件。请务必将此文件提交到 Git,它能保证所有人在所有机器上的环境完全一致。
第四步:运行项目 忘记 conda activate 吧! 直接运行:
Bash
uv run main.py uv 会自动检查 .venv 是否存在、依赖是否匹配,然后瞬间启动程序。
4. VS Code 集成设置
为了让编辑器识别 uv 环境,请按以下步骤操作:
选择解释器: 按 Ctrl+Shift+P -> Python: Select Interpreter -> 选择路径中带有 .venv (uv) 的那一项。
自动激活: 确保 VS Code 设置中的 python.terminal.activateEnvironment 为勾选状态。
直接执行: 你可以直接在 VS Code 终端输入 uv run python your_script.py,无需担心环境冲突。
5. 常见问题 (FAQ)
Q: 依赖包存在哪里了?会占满 C 盘吗? A: uv 将所有包存在全局缓存中。项目文件夹里的 .venv 只是指向缓存的“硬链接”,不重复占用空间。可以使用 uv cache clean 清理旧包。
Q: 没有 requirements.txt 怎么转到 uv? A: 运行 uv init 后,手动执行 uv add <包名>。或者如果有旧的 requirements.txt,运行 uv pip compile requirements.txt -o pyproject.toml 进行转换。
Q: 如何在不同项目间切换? A: 无需手动切换。 只要你进入项目目录,uv 命令就会自动读取该目录下的 .python-version 和 uv.lock。
6. 常用命令速查表
功能 以前 (Conda/Pip) 现在 (uv) 创建环境 conda create -n x python=3.x uv venv 或 uv init 安装包 pip install x uv add x 删除包 pip uninstall x uv remove x 运行程序 python main.py uv run main.py 同步环境 pip install -r req.txt uv sync 我该用什么IDE 带我入门Python的那位前辈,我以前问他,我该用什么IDE编写Python代码呀?他说,用一个你最顺手的文本编辑器就可以。 这么多年过去了,我也能理解他说的话了。最简单的反而是最实用的。 因为Python本身就是一门很简单的语言,只需一个Python解释器就可以逐行执行代码了。再复杂点,就打开一个文本编辑器,把代码写进去,保存成文件,执行:
python yourcode.py 现在的小伙伴,大部分喜欢用PyCharm,我不是很建议这么做,因为80%的情况下,只需要Python解释器+文本编辑器就够了。Pycharm里的一堆参数配置、解释器配置等等,很容易把一个新手搞晕。 如果是新手,建议使用vscode编写Python代码。
我该用Python2还是Python3 Python3,毋庸置疑。
不是说版本越高越好,而是因为Python2和Python3的差别太大了。几年前用Python2写代码, 经常要处理中文编码的问题。用Python3后,整个世界都变好了。
现在用Python2的场景很少,可能有时候刷CTF题,一些比较老的代码是用Python2写的,不得已才要用Python2。
平时工作如何编写Python 我一般会打开一个Python解释器,就是那个黑框框,在这个里面先验证一下我写的代码对不对,因为是一行行执行的,如果有报错,会立马看到错在哪里.
然后我会打开我心爱的编辑器gvim,将我调试好的Python代码保存在一个文本文件中,然后打开一个cmd窗口, cd到代码所在目录,python yourcode.py运行它。 就是这么简单, so easy~
如果运行程序文件报错时,如果需要调试,可以这样:
python -m pdb yourcode.py 这样会进行debug模式,逐行执行, 输入n回车,执行下一行.如需打印变量, 输入p var. 参考: Python 代码调试技巧
忘记某个函数的用法怎么办
如何知道某个函数的用法,如何知道某个包下面有哪些类和函数,如何知道一个对象的类型,如何知道某个对象有哪些方法。 打开Python解释器:
name = {} type(name) <class 'dict'> help(name) Help on dict object:
class dict(object) | dict() -> new empty dictionary | dict(mapping) -> new dictionary initialized from a mapping object's | (key, value) pairs | dict(iterable) -> new dictionary initialized as if via:
import os dir(os) ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', 'all', ...]
学会这个技巧后,基本不用查找第三方资料了。
总结一下,主要有这么几个有用的函数:
help: 查看函数或者对象的帮助文档
type: 查看对象的类型
dir: 查看包下有哪些函数和类
如何安装第三方库 全世界的程序员,为Python编写了很多功能强大的库,大部分基础性的功能,都有人帮你写好了。
你要做的就是像搭积木一样,把他们组装起来。 你可以用pip安装这些库,很简单。还记得上文提到我们把Python安装路径下的Script添加到环境变量里了吗? pip就在那里面。 打开一个cmd窗口,输入pip回车,就能看到。
以安装requests库举例:
pip install requests 安装完成后,打开一个Python解释器,输入:
import requests resp = requests.get('https://gitee.com/mktime') resp.text 这样就获取到了一个网址的html内容。
如何提高pip的下载速度 由于通过官方的pip源下载很慢,我们可以使用国内的镜像。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 这样就可以了。 详细设置请看这里: pypi 镜像使用帮助
如何进阶 现在回头看几年前自己写的Python代码,内心就一个字:丑的一批。
所以我认为Python进阶,也就是如何将Python代码写得更优雅和更高效。
这里我总结了几个技巧,分享给大家。如果读者有比较优雅的写法,欢迎留言给我,我会补充进来。
字符串处理相关 字符串处理是写程序遇到的最多的一个场景,如果是以前,我可能会这样写:
name = 'john' age = 27 content = 'Hello, my name is ' + name + ', I am ' + str(age) + '.' print(content) Hello, my name is john, I am 27.
上面这种写法,用了大量字符串拼接,一个是容易写错,而且遇到类型不匹配还需要自己转换。
使用字符串的format方法后,会优雅很多:
content = 'Hello, My name is {}, I am {}'.format(name, age)
print(content) Hello, My name is john, I am 27
和字符串处理相关的,还有一个join方法。如果有多个变量,想拼接成一个字符串,且用竖线分隔,可以这样:
name = 'john' address = 'Beijing' email = 'faker@mail.com'
arr = [name, address, email] '|'.join(arr) 'john|Beijing|faker@mail.com'
变量处理相关 如何把数组中的多个元素赋值给多个变量,如果是以前,我可能会这样写:
arr = ['john', 'Beijing', 'faker@mail.com']
name = arr[0] address = arr[1] email = arr[2] 现在我会这样写:
name, address, email = arr 如果你想跳过数组中的某个变量,可以用下划线:
arr = ['john', 'Beijing', 'faker@mail.com'] name, _, email = arr 字典默认值 假设有一个这样的场景,需要动态创建一个字典,每个key对应一个列表,如果key不存在则需要先创建这个key,再往key中append元素。常规写法:
list [['friuit', 'apple'], ['friuit', 'orange'], ['friuit', 'banana'], ['friuit', 'pear'], ['device', 'phone'], ['device', 'laptop'], ['device', 'mac']] data = {} for (k,v) in list: ... if k not in data: ... data[k] = [] ... data[k].append(v) ... data {'friuit': ['apple', 'orange', 'banana', 'pear'], 'device': ['phone', 'laptop', 'mac']}
比较pythonic的写法:
data = {} list [['friuit', 'apple'], ['friuit', 'orange'], ['friuit', 'banana'], ['friuit', 'pear'], ['device', 'phone'], ['device', 'laptop'], ['device', 'mac']]
[data.setdefault(k, []).append(v) for (k,v) in list] [None, None, None, None, None, None, None] data {'friuit': ['apple', 'orange', 'banana', 'pear'], 'device': ['phone', 'laptop', 'mac']}
列表推导 举个例子,如何将一个文件中的每一行读取出来,并组成一个列表。如果是以前,我可能会这样写:
filename = 'balance_query_input.txt' f = open(filename, encoding='utf-8') items = f.readlines() for item in items: ... item = item.strip() f.close()
如果是现在,我会这样写:
items = [x.strip() for x in open(filename, encoding='utf-8').readlines()] 如果想同时过滤掉文件中的空行和长度不足4的行,可以这样:
items = [ x.strip() for x in open(filename, encoding='utf-8').readlines() if len(x.strip())>4 ]
如何对列表中的每个元素,调用一个方法?如果是以前,我可能会这样写:
items = [ x.strip() for x in open(filename, encoding='utf-8').readlines() if len(x.strip())>4 ]
for item in item: ... deal(item) ... 现在我会这样写:
[ deal(item) for item in items ] 总之,学会使用列表推导后,基本上不用写for循环了。
使用内置函数map 其实列表推导的效果,使用map同样能实现,但是据说由于map是内置函数,所以效率会高一些。举个例子,对一个列表中所有元素增加10,首先定义一个inc函数:
arr = [x for x in range(10)]
arr [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def inc(val): ... return val + 10 ... 先演示使用列表推导的实现方式:
[inc(x) for x in arr] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
再演示使用map的实现方式:
[x for x in map(inc, arr)] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 使用lambda表达式 lambda表达式的作用是,创建匿名对象。好处就是,不用单独定义函数了。使用lambda表达式对上面的代码再进一步简化:
[x for x in map(lambda x:x+10, arr)] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
使用sorted进行自定义排序 假设现在有一些文件,名称按照数字命名,如果使用sorted默认排序,将会按照字符串来处理,这并不是我们想要的结果:
data ['1.PDF', '10.PDF', '11.PDF', '12.PDF', '13.PDF', '2.PDF', '3.PDF', '4.PDF', '5.PDF', '6.PDF', '7.PDF', '8.PDF', '9.PDF'] sorted(data) ['1.PDF', '10.PDF', '11.PDF', '12.PDF', '13.PDF', '2.PDF', '3.PDF', '4.PDF', '5.PDF', '6.PDF', '7.PDF', '8.PDF', '9.PDF']
我们想按照数字大小进行排序,则需要使用sorted的自定义key参数:
data ['1.PDF', '10.PDF', '11.PDF', '12.PDF', '13.PDF', '2.PDF', '3.PDF', '4.PDF', '5.PDF', '6.PDF', '7.PDF', '8.PDF', '9.PDF']
sorted(data, key=lambda i:int(i.split('.')[0])) ['1.PDF', '2.PDF', '3.PDF', '4.PDF', '5.PDF', '6.PDF', '7.PDF', '8.PDF', '9.PDF', '10.PDF', '11.PDF', '12.PDF', '13.PDF']
参数key是一个函数,接收data中的每个元素,并返回一个值。
如果想对一个字典进行排序,也可以使用key进行处理,使得sorted很灵活:
data [{'key': '1'}, {'key': '2'}, {'key': '100'}, {'key': '55'}, {'key': '6'}]
sorted(data, key=lambda i:int(i['key'])) [{'key': '1'}, {'key': '2'}, {'key': '6'}, {'key': '55'}, {'key': '100'}]
lambda表达式、map、filter、sorted这几个神器,还有很多高阶应用,欢迎各位读者补充。
使用多线程+队列完成可并行处理的任务 多线程+队列,是一种编程模型,被称为生产者/消费者模型。
假设有一个队列中保存着所有待处理任务,如果这些任务是可以并行处理互不干扰,则可以使用这种编程模型。
举个例子,要把所有URL中的html内容解析出结构化数据并存储起来。这种场景就可以使用生产者/消费者模型。
import queue from threading import Thread import threading
任务队列,存放待处理任务,可由多个线程并行处理
task_queue = queue.Queue()
结果队列,存放结构化数据,由单线程逐个获取并存储到数据库
result_queue = queue.Queue()
多线程任务逻辑,不停从任务队列中领取任务,并将处理结果塞入结果队列。
def do_deal(): while True: item = '' try: item = task_queue.get_nowait() except queue.Empty as e: log("task queue is empty, sleep a while.") time.sleep(1) continue data = deal(item) result_queue.put(data)
单线程从结果队列获取结构化数据,并存储到数据库或者文件
def do_save(): while True: record = '' try: record = result_queue.get_nowait() except queue.Empty as e: log("result queue is empty. sleep a while.") time.sleep(1) continue log('record:' + record) f = open(OUTPUT, 'a') f.write(record) f.close()
创建任务队列
tasks_list = [ x for x in filter(lambda x: True if x.split('/')[4]+x.split('/')[5] not in done_list else False, [ y.strip() for y in open(INPUT).readlines() ]) ]
[ task_queue.put(x) for x in tasks_list ]
启动多个任务处理线程
for i in range(6): Thread(target=do_deal, name='producer'+str(i)).start()
启动单个结果处理线程
Thread(target=do_save, name='consumer1').start() 参考学习 官方文档是最好的学习资料
https://docs.python.org/zh-cn/3/
推荐项目 一个用Python写的爬取豆瓣小组信息的项目:https://gitee.com/mktime/scrapy-douban-group
一个用Python QT开发的跨平台的GUI程序。: https://gitee.com/mktime/learn-pyside6
一个用Python+Vue 开发的AI语音助理项目(虚拟女友)。: https://gitee.com/mktime/ai-girlfriend
延申阅读 数据分析为什么常用Jupyter而不是直接使用Python脚本或Excel?
关乎Python lambda你也看得懂
python lambda结合列表推导式
python3内置函数map
怎样才能写出 Pythonic 的代码?
Python 有哪些优雅的代码实现让自己的代码更pythonic?
2020年10个不错的Python库
酷!一个仿漫画手绘风格的 Python 图表库
8k Star!基于 Matplotlib 的数据可视化利器
1.5 万 Star!大大提升终端体验的好工具:Rich
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
案例 不定期更新
离线AI大模型实现音频人声分离+语音识别+离线翻译的应用 本项目是一个全自动化的语音处理流水线,专门用于处理多说话人场景(如访谈、播客、会议记录)。它能够在本地完全离线运行,实现声纹分割、语音转文字以及自动翻译。 项目源代码: talkshow
主要功能 智能声纹分割:识别音频中不同的说话人,并自动合并同一个人连续的短句,过滤环境噪音。
离线语音识别:利用 GLM-ASR-Nano 模型,在本地快速将语音转换为原始文本。
离线机器翻译:利用腾讯 HY-MT 模型,将识别出的原文翻译为中文。
cs格式转换为vcf(version 3.0)格式 https://gitee.com/mktime/python-learn/blob/master/csv2vcf.py
CNN(卷积神经网络)识别图片的例子,附带测试数据集,可直接运行 https://gitee.com/mktime/python-learn/blob/master/cnn-demo.py
人脸检测以及嵌入特征提取 https://gitee.com/mktime/python-learn/blob/master/face-detect.py
date: 2025-01-13
desc: 一段简单的使用dlib检测人脸以及嵌入特征提取的例子. 代码里用到的预训练模型请从如下链接下载: https://github.com/ageitgey/face_recognition_models/blob/master/face_recognition_models/models/dlib_face_recognition_resnet_model_v1.dat
Linux下实时获取音频并推送到RTMP https://gitee.com/mktime/python-learn/blob/master/audio-rtmp.py
date: 2024-10-31
desc: 一段简单的使用pyaudio和ffmpeg录制音频并推送至RTMP服务器的代码,可以实现音频监控,后期计划制作音轨可视化和音频存档及查询的功能.
Linux下调用获取摄像头视频截图 https://gitee.com/mktime/python-learn/blob/master/capture-camera.py
date: 2024-10-10
desc: 一段简单的使用opencv库获取摄像头视频截图的代码
读取医学影像学DCM格式文件 https://gitee.com/mktime/python-learn/blob/master/dcm2jpg.py
date: 2024-07-05
desc: 一个简单的使用pydicom库读取dcm影像格式文件并转换为jpg图片的例子。
g p t / 35.py https://gitee.com/mktime/python-learn/blob/master/gpt35.py
date: 2023-04-08 13:47:14
desc: 一个简单调用open / ai python api的例子,使用g/p/t/3/.5模型,实现简单的对话.需要提前申请一个appkey.
运行截图
https://gitee.com/mktime/learn-pyside6 https://gitee.com/mktime/learn-pyside6
date: 2022-11-19 21:17:50
desc: 一个使用PyQT开发的跨平台应用程序,基本功能包括:PyQT控件的基本用法、QT设计器的使用、Oracle数据库的读写并展示在界面、Excel的读取和创建等。
运行截图
ExcelHelper.py https://gitee.com/mktime/python-learn/blob/master/ExcelHelper.py
date: 2022-11-26 13:02:15
desc: 封装了一个Excel帮助类,同时支持xls,xlsx格式,支持excel的读写和追加(这对基于某个模板生成文件很有用)
check_https_domain_exp_date.py https://gitee.com/mktime/python-learn/blob/master/check_https_domain_exp_date.py
date: 2022-11-18 21:22:42
desc: 检查网站https证书是否过期,可以基于此程序增加微信通知等监控功能。
howto_terminate_thread.py https://gitee.com/mktime/python-learn/blob/master/howto_terminate_thread.py
desc: 如何优雅地退出线程
wind_crawl.py https://gitee.com/mktime/python-learn/blob/master/wind_crawl.py
desc: Linux下调用wind Python API 获取股票、债券、基金耵市数据,以及70个中大城市新建商品房/二手住房房价数据.
test_pdf2images.py https://gitee.com/mktime/python-learn/blob/master/test_pdf2images.py
desc: 将PDF拆分成图片。
balance_query.py https://gitee.com/mktime/python-learn/blob/master/balance_query.py
date: 2021-02-05 17:36:28
desc: 这是一个实际的工作例子,结合tcp socket、配置解析、文件读取、字符串处理的用法,实现一个完整功能。
link: https://docs.python.org/zh-cn/3/library/configparser.html
baidu_ocr.py https://gitee.com/mktime/python-learn/blob/master/baidu_ocr.py
2021-01-27 16:38:38
desc: 百度OCR接口识别身份证程序,使用消费者/生产者模型。
ref: https://cloud.baidu.com/doc/OCR/index.html
print_ascii.py https://gitee.com/mktime/python-learn/blob/master/print_ascii.py
date:2020-12-27 23:53:23
desc:有时候身边没有Linux环境,不能方便查看ascii码表,这个就能派上用场了。
egcd.py https://gitee.com/mktime/python-learn/blob/master/egcd.py
date:2020-12-27 23:48:40
desc:扩展欧几里得
learn_thread.py https://gitee.com/mktime/python-learn/blob/master/learn_thread.py
date:2020-12-27 23:34:42
desc:学习使用线程池
scan2.py https://gitee.com/mktime/python-learn/blob/master/scan2.py
date:2020-12-27 23:33:33
desc:对多个IP地址的常见端口快速探测。
scan.py https://gitee.com/mktime/python-learn/blob/master/scan.py
date2020-12-27 23:32:48
desc:对一个IP地址的所有端口快速探测。
parse_excel.py https://gitee.com/mktime/python-learn/blob/master/parse_excel.py
date:2020-08-26 11:05:29
desc:使用xlrd,xlwt实现excel文件的创建、修改,实现基于模板xls文件的文件创建,当模板xls文件带有格式时,能自动带入。
mail: withfaker at gmail.com
flv2mp4.py https://gitee.com/mktime/python-learn/blob/master/flv2mp4.py
date: 2020-02-13 15:24:21
desc: 将flv视频转换为mp4格式
mail: withfaker at gmail.com
link: B站开源的纯HTML播放FLV视频
test_img2pdf.py https://gitee.com/mktime/python-learn/blob/master/test_img2pdf.py
date: 2020-02-26 00:08:50
desc: 将多张jpg图片合成一个PDF文件。
mail: withfaker at gmail.com
TLDR: 一个朋友发来一个PDF,要删除每张片子底部的链接文字,然后合成一个新的PDF。 搜了一下,免费的工具都是扯淡。只好打开PS,导入pdf文件,PS会自动生成多张图片,用橡皮擦工具擦除底部的链接,重新导出每张照片,然后用img2pdf这个库,就好了。
xml2vcf.py https://gitee.com/mktime/python-learn/blob/master/xml2vcf.py
data: 2014-02-09 01:23:51
desc: 将刷机精灵软件导出的xml格式联系人转换为vcf格式联系人
mail: withfaker@gmail.com
blog: http://mktime.org
0.使用前,先将刷机精灵导出的xml文件第一行删除.
1.如果导出的文件有空行, :g/^$/d
2.如果导出的用户号码中间有横杠, :%s/-//g
mydict.py https://gitee.com/mktime/python-learn/blob/master/mydict.py
date: 2014-02-27 11:48:04
desc: 百度/有道翻译接口使用
email: withfaker@gmail.com
urls: http://fanyi.youdao.com/openapi
update: 2014-02-27 17:11:43 经过比对,百度翻译比有道翻译差的不只是一点点...
2014-09-04 10:29:19
经过测试,发现百度翻译已经翘辫子了,故从代码中剔除了对百度翻译接口的调用
网易是一家有态度的公司
get_bookmarks.py https://gitee.com/mktime/python-learn/blob/master/get_bookmarks.py
date 2013-07-20 18:39:01
desc convert delicious xml file to bookmarkdown format
email: withfaker@gmail.com
fetchurl.py https://gitee.com/mktime/python-learn/blob/master/fetchurl.py
date: 2014-03-03 18:13:33
url: http://www.dbmeizi.com
desc: fetch all images from dbmeiz.com
email: withfaker@gmail.com
update: 没有使用thread,简单的循环处理,担心服务端的拒绝[403].
learn-thread.py https://gitee.com/mktime/python-learn/blob/master/learn-thread.py
date: 2014-03-07 20:51:03
url: http://www.dbmeizi.com
desc: fetch all images from dbmeiz.com
email: withfaker@gmail.com
update: 使用多线程下载豆瓣妹子图片
qiushi.py https://gitee.com/mktime/python-learn/blob/master/qiushi.py
date: 2014-03-27 23:40:15
url: http://www.qiushibaike.com desc: fetch some jokes from this site.
email: withfaker@gmail.com
update: save content into mysql database.
sock5.py https://gitee.com/mktime/python-learn/blob/master/sock5.py
url: http://xiaoxia.org/2011/03/29/written-by-python-socks5-server/
desc: socks5 proxy server written using python
email: withfaker@gmail.com
data-structure.py https://gitee.com/mktime/python-learn/blob/master/data-structure.py
date: 2014-07-10 16:26:48
desc: 数据结构、算法
email: withfaker@gmail.com
get_version.py https://gitee.com/mktime/python-learn/blob/master/get_version.py
date: 2014-07-10 17:26:31
desc: Windows电脑版本判断
email: withfaker@gmail.com
ipfind.py https://gitee.com/mktime/python-learn/blob/master/ipfind.py
date: 2014-07-10 17:27:06
url: http://lilydjwg.is-programmer.com/2014/5/27/qqwry-dat-parser-python-3-version.47207.html
desc: 纯真IP数据库QQWry解析库Python3版
email: withfaker@gmail.com
pm25.py https://gitee.com/mktime/python-learn/blob/master/pm25.py
date: 2014-07-10 17:29:47
url: http://pm25.in
desc: pm2.5乌鲁木齐数据监测
email: withfaker@gmail.com
rpc_server.py https://gitee.com/mktime/python-learn/blob/master/rpc_server.py
date: 2014-07-10 17:30:37
desc: 如何使用RPC server
email: withfaker@gmail.com
sock_client.py/sock_serv.py https://gitee.com/mktime/python-learn/blob/master/sock_client.py
date: 2014-07-10 17:31:41
desc: socket TCP example
email: withfaker@gmail.com
tray.py https://gitee.com/mktime/python-learn/blob/master/tray.py
date: 2014-07-10 17:32:22
desc: Windows平台系统通知栏系统图标的展示(windows system tray notify)
email: withfaker@gmail.com
smz_report.py https://gitee.com/mktime/python-learn/blob/master/smz_report.py
date: 2014-09-04 10:24:17
desc: 使用python从数据库提取数据,然后发送HTML格式邮件
email: withfaker@gmail.com
import_ess_picture.py https://gitee.com/mktime/python-learn/blob/master/import_ess_picture.py
date: 2014-09-04 10:25:15
desc: 使用python连接oracle,解析文本文档,更新数据库中clob字段内容
email: withfaker@gmail.com
export_delicious.sh https://gitee.com/mktime/python-learn/blob/master/export_delicious.sh
date: 2014-10-05 16:25:11
desc: 导出delicious链接
ve2x.py https://gitee.com/mktime/python-learn/blob/master/ve2x.py
date: 2014-10-07 00:33:45
desc: find v2ex top 8 item from v2ex mongo database crawled by v2ex spider
email: withfaker@gmail.com
remote.sh https://gitee.com/mktime/python-learn/blob/master/remote.sh
date: 2015-02-23 22:10:12
desc: 一键连接openvpn并且以远程桌面的方式连接办公室的windows电脑
email: withfaker@gmail.com
monitor.sh https://gitee.com/mktime/python-learn/blob/master/monitor.sh
date: 2015-03-03 10:35:27
desc: 关键进程监控脚本
email: withfaker@gmail.com
auto_build.py https://gitee.com/mktime/python-learn/blob/master/auto_build.py
date: 2015-03-16 10:48:22
desc: 解析xls中的编译任务,执行程序的编译命令,将结果输出到xls中.
email: withfaker@gmail.com
rpc_server.py https://gitee.com/mktime/python-learn/blob/master/rpc_server.py
date: 2015-03-17 11:57:36
desc: 简易的基于tcp socket的远程调用,客户端通过socket将需要执行的命令发给tcp server,tcp server执行后将执行结果返回给tcp client.
email: withfaker@gmail.com
http_proxy.py https://gitee.com/mktime/python-learn/blob/master/http_proxy.py
date: 2015-04-15 11:33:13
desc: simple http proxy
email: fnds3000@gmail.com
findbig.py https://gitee.com/mktime/python-learn/blob/master/findbig.py
date: 2015-06-11 11:23:23
desc: 找出目录内的大文件
email: withfaker@gmail.com
find_repeat.py https://gitee.com/mktime/python-learn/blob/master/find_repeat.py
date: 2015-07-16 12:56:27
author: withrock
mail: withfaker@gmail.com
desc: 查找硬盘上的重复文件
this tool is used to find content-repeated file in a directory tree.
it didn't not use md5 hash because of slowly for calcluating big file.
i wrote a simple hash function calc_hash whhich just depends on file size and file name.
if you have good idea for quickly calcluating file hash,
you can give me some advise, thank you!
screen.sh https://gitee.com/mktime/python-learn/blob/master/screen.sh
date: 2015-11-04 11:13:51
author: withrock
mail: faker@163.com
desc: 一个简单的脚本,方便用来调整笔记本的显示屏亮度。结合awesome wm使用会更加方便。
通过alt+F5, alt+F6快捷调整显示屏亮度。
回复