
Python
飞行的荷兰猪
这个作者很懒,什么都没留下…
展开
-
数值转汉字
# Author: Bao import redef num_to_mandarin(num): """ Convert int number to mandarin in simplified Chinese. :param num: int :return: simplified Chinese string In [1]: num_to_mandarin(123784700200019) Out[1]: '一百二十三万七千八百四十七亿零二十万零一十原创 2021-02-07 22:45:09 · 262 阅读 · 0 评论 -
python使用asyncio单进程异步监听进程间queue通信
背景应用存在大量非持久性/高阻塞的独立过程时,阻塞对效果的影响比计算资源消耗更大。这个时候使用轻量协程(coroutine)比多线程更加安全可控,极大减少了锁、线程资源复制等隐藏问题/比使用多进程更加轻量易管理。例如:网路爬虫,每个网页的请求作为独立的高阻塞原子动作,使用协程能将大量请求异步调度使用多进程queue对协程任务create/cancel进行动态管理时,即引发本次记录问题:如何在异步执行task时,能在event loop中异步监听消息队列,既能正常执行单进程单线程的大量协程任务调度,又能原创 2020-12-25 15:24:00 · 1945 阅读 · 1 评论 -
爬虫爬取公众号内容
*不涉及具体代码具体步骤获取移动端内容列表AVD模拟器(Discarded)经过实际尝试,算力占用过多,不予考虑。adb USB debugadb调试 + appium server + python appium-client 控制脚本点击/滑动获取所有内容列表、发送移动端页面访问请求。移动端流量请求劫持调查发现,所有移动端访问公众号内容发起的流量请求跟实际内容URI均保持统一格式:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhRAOmnn-原创 2020-10-17 09:59:37 · 534 阅读 · 0 评论 -
python requests编码类型推断错误导致乱码
问题描述今天在教别人一些爬虫基础遇到一个从来没有出现过的现象:中文网站奇怪的乱码,经过多种编码尝试,均不能还原:import requestsfrom bs4 import BeautifulSoupres = requests.get('http://www.xinhuanet.com/')bs = BeautifulSoup(res.text, 'lxml')for item in bs.select('.dataList01 a')[:3]: print(item.text)原创 2020-10-15 01:10:58 · 2565 阅读 · 1 评论 -
python金额转换汉字为数字
金额转换很多情况下需要对文本当中的金额进行抽取转储成数值,往往又存在诸多恶心的不规范标记/表述/或者原始数据获取残缺的情况,因此做记录。思路实际上,字符串转换到数值,最大的麻烦十进制表示关系不如阿拉伯数字直观,自然语言的表述是嵌套甚至是省略的。但是有一点可以确定的是,自然语言对金额/数字的表述,也是存在逻辑关系的。比如:九百六十万九仟八百一。从字面上看,同样表述几百几千,会在多个位置出现,所以肯定是不能用正则或者其他纯字符传组织形式的方法去推敲转换。但是,不难发现,作为自然语言,表述尽管错乱多样,但原创 2020-08-17 19:28:58 · 1951 阅读 · 3 评论 -
python实现linux tree目录树状图
内网不能下载linux tree工具包,动手写之。先上一个能实现最基础功能的乞丐版片段。# coding=utf-8# Author : BaoJunxian# Date : 2018/11/27import os, sysPREFIX = ['└─ ', '├─ ']INDENTION = ['│ ', ' '*4]def tree(path , depth=1, fla...原创 2018-11-28 13:27:02 · 1191 阅读 · 1 评论 -
小记/usr/bin/python^M: bad interpreter: No such file or directory的问题
很多情况下python作为脚本语言编写的脚本都是在win上用IDE写好,自动化sync到服务器上,如果全部都是由IDE部署上去的一般不是很容易出问题,但是部署完之后在生产环境用vim稍作修改,往往会出现问题。如:#! /usr/bin/python# coding=utf-8... ...实际运行报错:/usr/bin/python^M: bad interpreter: No such ...原创 2018-11-28 18:49:18 · 9531 阅读 · 0 评论 -
python自动化UI工具发送QQ消息
概述个人遇到过小的需求,windows自动水群发送垃圾消息,使用一些特别简单易上手的小工具,快速实现功能需求(而不是使用一些重量级的还需要额外花时间去熟悉功能语法的大工具,如UI自动化工具sikulix)。在一番摸索下,得出一番结论:对于多平台的UI自动复杂操作,还是去学sikulix吧,这不是啃一点win32 api获取窗口句柄就能轻松解决的,毕竟sikulix是MIT大佬折腾出来的。而且...原创 2019-01-04 23:48:50 · 14139 阅读 · 4 评论 -
python实现简单diff工具
简述两套代码需要大量diff,遂顺手写了这么个小玩意儿。能对文件diff,也能对相同目录结构的目录进行迭代diff,将diff结果保存为html文件。参数说明:o 指定输出的目录名称(也就没管其他路径吧啦吧啦啥的,临时写的,默认当前目录)f 指定整个文件夹进行diff,默认diff结果也是按照文件目录的结构进行存放的,指定-f放在一起d 指定对文件夹下所有文件进行遍历diff上代码:...原创 2019-01-30 19:20:11 · 4432 阅读 · 0 评论 -
yield伪多线程
import uuiddef record(): while True: product_number = yield print("Recoded number serial -> [{}].".format(product_number))def produce(tuple_list): for i,j in tuple_list...原创 2019-06-04 22:37:34 · 179 阅读 · 0 评论 -
python调用Linux C系统用户认证接口
最近在考虑一个很鸡肋的东西,如果一个python程序对身份要求很高,需要系统级别的用户认证才能进行访问,那么如何设计编写这样一个认证接口?于是便有了下文。原创 2018-11-29 20:51:34 · 535 阅读 · 0 评论 -
关于坑爹的windows路径以及\处理相关
在写脚本自动处理归档windows下本地文件的时候真的特别头疼,主要就是windows下文件命名规则可以中文、夹带空格以及路径表示处理起来比较麻烦。“\”表示路径 不同于linux用“/”来进行当前目录跟上一级目录文件的路径分隔,windows使用反斜杠进行分隔表示。但是在python等编程语言中,反斜杠所作为转义字符存在的,因此表示字符反斜杠需要“\\”进行表示。print('\'...原创 2018-06-10 13:32:25 · 3181 阅读 · 0 评论 -
自动编译执行并生成log、记录CSV文件工具脚本
最近实习,因工作需求,需要对大量源码分别用不同编译器进行编译执行并分别记录文件编译信息以及编译成功运行的信息,并根据要求记录每个文件的csv信息。小组提供的一个稍有简陋的shell脚本功能有限,个人也完全不懂shell。因此重编写了一个小工具,记录之,尽管可能重用率可能并不高。 工具工作内容:单一项目文件夹中不相干的每一个源码(c/c++)进行三种编译器编译(gcc/clang以及公司自己...原创 2018-05-31 23:34:26 · 2628 阅读 · 0 评论 -
python open()函数 文件的打开方式及特点
文件操作第一步就是open()方法来创建文件对象。为了实现不同的操作,需要指定open()打开方式。有'r'/'w'/'a'/'r+'/'w+'/'a+'以及'rb'等二进制打开方式然而,实际操作中,经常会因为打开方式不对,造成很多不必要的小错误,还要参考一些文档进行修改,很是麻烦,特此总结。1.不指定“写”的方式,都不能进行写操作(比如a) 2.只有’w’/’a’及其相关方式打开,...原创 2018-03-08 17:18:03 · 4232 阅读 · 0 评论 -
python zipfile压缩文件夹
在使用python zipfile模块进行压缩文件创建的时候,发现貌似只有zipfile对象的write()方法对文件的添加,那么如何将一个文件夹压缩添加到压缩文件中呢? ①直接write() dir: 创建一个如图结构测试目录,如下压缩:import zipfilewith zipfile.ZipFile('aa.zip','w') as target: target...原创 2018-03-12 19:34:24 · 18409 阅读 · 1 评论 -
python shelve模块的使用及注意点
介绍shelve是python中一种存储结构化数据的模块,用法跟字典相似,以键值对的形式储存。基本使用方法:1.引入模块import shelve2.创建数据文件:with shelve.open(filename) as object:object = shelve.open(filename)两种文件操作的方式均可以。不难看出,对shelf文件数据的读写是不用指定文...原创 2018-03-06 16:55:22 · 3263 阅读 · 0 评论 -
优快云博客原创访问量日报工具
最近突然有点迷上攒博客,没有什么比有人看、排名上升更让人兴奋的了。可是日常总不能老盯着看增加了多少访问量,像排名这种也没办法记住变化,故粗浅调查了一下beautifulsoup4这个python写的html文件解析模块,写了一个小工具用来统计每篇原创文章的访问量变化,在电脑上跑crontab,定时向公司邮箱发送报告。# filename:优快云visitReport.py# Autho...原创 2018-06-11 23:40:13 · 308 阅读 · 1 评论 -
多层嵌套列表转为单层list
最近在编写工具对csv文件进行自动化填充的时候,遇到一个比较有意思的小问题,作为一个函数返回值,将多个数据结果作为list元素返回,返回值就成了一个多层嵌套的list。a = [arg1,arg2,[arg3,[arg4,],]返回值作为修改填充的参数,在嵌套的列表中自然不适合提取遍历自动填充,因此就想到有没有方法将嵌套的list转成单层的列表便于数据提取。在没有现成模块方法的情况下,最简...原创 2018-05-30 23:03:30 · 5488 阅读 · 0 评论 -
python2.x中input跟raw_input的区别
对于标准输入的处理,不同于py3,将所有标准输入均处理为字符串,py2中则严格区分数值跟字符串。py3:print(type(input()))>>1212<class 'str'>py2:print(type(input()))>>1212<type 'int'>但是对于py2 input字符串去有所不同:pri...原创 2018-05-30 23:40:08 · 307 阅读 · 0 评论 -
利用python subprocess模块从系统获取程序运行状态返回值的方法
最近在编写一个工具的时候遇到一个很棘手的问题:linux开发环境下对静态语言程序进行自动化批量编译,需要根据编译结果执行一定的操作,但是bash调用编译器的bin程序对文件进行编译之后的状态有点棘手。 一开始想到的方法是,直接在工具中写死:import osos.system('gcc &lt;_file&gt; ;echo $?')通过在执行编译命令后紧接着执行echo $?命令...原创 2018-05-31 01:23:15 · 19428 阅读 · 0 评论 -
用python openpyxl模块自动化修改csv文件
excel表格有时数据量过大且数据对象有规律分布的时候,手动进行格式化填充显得尤为麻烦。利用python openpyxl模块(文档链接openpyxl.readthedocs)可以高效对csv文件进行自动化填充。模块安装:pip install openpyxl• 读取文件: ○ load_workbook -- 加载工作簿(excel文件,绝对路径) § ...原创 2018-05-31 23:05:04 · 2968 阅读 · 0 评论 -
个人代码量统计工具
代码量能体现一个程序员的能力(起码是正相关的),恰逢最近看到了os模块一些用法,手头无事,随手写了一个小小的工具用来统计个人代码量。# Author: BaoJunxian# Date: 3/6/2018#path format is for windows temporarilyimport osdef cal(filePath=None): count = 0 ...原创 2018-03-06 23:04:13 · 947 阅读 · 1 评论