128 Star 564 Fork 216

mktime / python-learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

本仓库的意义

本仓库记录了我学习Python过程中编写的大部分代码,创建之初是想将编写的Python代码收集起来,防止丢失和重复编写。大部分代码,都是为了解决工作中遇到的实际问题。

最近几年,随着大数据、人工智能的火热,使用Python编程的小伙伴越来越多。我有幸在多年前接触到Python,知道一点皮毛。身边的同事想学Python,但无从下手。我就把这个仓库的代码和文档完善完善,让它发挥点价值吧。

我是如何接触Python的

我第一次接触Python,当时刚毕业,来到一家公司,公司里有一个技术很好的前辈,我听到他和其他同事讨论Python语言。我以前只会C/C++,第一次听说大蟒蛇语言,充满了好奇,就去搜索了一下,我还请教他,看他怎么编写的,后来问他要了一些他写过的代码,拿来学习。前辈也很不错,他喜欢别人和他探讨技术问题,慢慢地我也了解了一点Python的知识。

再后来,我发现用Python处理工作中的一些需求还是挺方便的,写起来很带劲,用很少的代码就能实现其他语言要写一大堆的功能。而且Python的语法非常优雅,就好像是在写伪代码,伪代码写好了,功能也就实现了,这种感觉非常棒,如果是一个新手,你会觉得很有满足感。在这个过程中,我陆续用Python编写过文本处理、文件解析、TCP Socket收发请求、发送监控邮件、excel处理、网站爬虫等功能。

如何安装Python

如果是Windows操作系统,从官网下载最新的Python二进制安装包。 Python官网下载地址:https://www.python.org/downloads

安装完成后,如果安装路径是

D:\Python37

则把

D:\Python37
D:\Python37\Script

添加到环境变量PATH中即可.重新打开一个cmd窗口,输入python ,你就能看到Python解释器了。 输入

print('hello, Python!')

这是你的第一行Python代码。

如果是Mac或者Linux,自带Python,无需安装。

我该用什么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

延申阅读

数据分析为什么常用Jupyter而不是直接使用Python脚本或Excel?

关乎Python lambda你也看得懂

python lambda结合列表推导式

python3内置函数map

怎样才能写出 Pythonic 的代码?

Python 有哪些优雅的代码实现让自己的代码更pythonic?

2020年10个不错的Python库

酷!一个仿漫画手绘风格的 Python 图表库

8k Star!基于 Matplotlib 的数据可视化利器

1.5 万 Star!大大提升终端体验的好工具:Rich

用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了

案例

不定期更新

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:扩展欧几里得

​ ref: https://baike.baidu.com/item/%E6%89%A9%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95/2029414

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快捷调整显示屏亮度。

wifi-keep.sh

https://gitee.com/mktime/python-learn/blob/master/wifi-keep.sh

​ date: 2015-11-10 19:23:56

​ author: withrock

​ mail: faker@163.com

​ desc: 一个在网络不稳定的情况下,能自动连接wifi的小脚本。需要借助netctl。运行时需要root权限(sudo ./wifi-keep.sh)

The MIT License (MIT) Copyright (c) 2014 mktime Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

GPT对话,Python基础编程示例:Excel读写追加处理,XML解析、JSON解析、FLV与MP4转换,PyQT界面应用程序开发示例等,https证书到期检测,糗百爬虫,pdf和图片互相转换,socket使用,百度OCR调用例子,IP及端口快速扫描。 展开 收起
Python 等 5 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/mktime/python-learn.git
git@gitee.com:mktime/python-learn.git
mktime
python-learn
python-learn
master

搜索帮助