Python 标准库提供了 collections 模块。这个方便的附加组件能够为你提供更多数据类型。html
from collections import OrderedDict, Counter # Remembers the order the keys are added! x = OrderedDict(a=1, b=2, c=3) # Counts the frequency of each character y = Counter("Hello World!")
maps.cfg
:[PERCENT] #配置文件对应的系统文件夹名 system_dir =C:\Users\michaelxiang\Desktop\get_report0906\get_report\maps #请输入占总交易的百分比值(小数) percent = 0.8 #决定是否只是筛选占交易比重大的交易(y or n) decision =y [SUCC_VALUE] #请输入成功率阈值(1之内的小数) default_succ_value = 0.8 缴费 =0.8 消费 =0.8 行业帐单 =0.8 行业信息查询 =0.8 [KEEP_TIME] default_keep_time =60 缴费_持续时间 =60 消费_持续时间 =60 行业帐单_持续时间 =60 行业信息查询_持续时间 =60
cf = configparser.ConfigParser() # 读取配置文件变量config,并指定编码格式 cf.read(config, encoding='gb2312') system_dir = cf.get('PERCENT', 'system_dir') percent = float(cf.get('PERCENT', 'percent')) decision = cf.get('PERCENT', 'decision') # cf.options得到元祖对的列表[(,),(,)……] succ_value_list = cf.options('SUCC_VALUE') keep_time_dic = {x[0]: float(x[1]) for x in cf.items('KEEP_TIME')}
__ future__模块容许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的:java
from __future__ import print_function print("Hello World!")
假装浏览器身份:python
pip install fake-useragent from fake_useragent import UserAgent ua = UserAgent() ua.ie ua.msie ua.opera ua.chrome
下载视频字幕:linux
pip install getsub getsub <视频路径>
生成 .gitignore
文件:nginx
#https://www.gitignore.io/ $ pip install gy $ gy generate python java lisp
中华人民共和国居民身份证、中华人民共和国港澳居民居住证以及中华人民共和国台湾居民居住证号码验证工具(Python 版):git
生成 Python 艺术二维码github
pip install MyQR myqr https://github.com myqr https://github.com -v 10 -l Q
解析 nginx 访问日志并格式化输出算法
pip install ngxtop $ ngxtop
for root, dirs, files in os.walk(system_dir): i += 1 print(i) print(root) print('dirs') print(dirs) print('files') print(files)
1 C:\Users\michaelxiang\Desktop\get_report0906\get_report ['maps'] ['a.py', 'b.py', 'get_report.py', 'judge_succ.py', 'maps.cfg'] 2 C:\Users\michaelxiang\Desktop\get_report0906\get_report\maps ['2016-09-06-16-18-40'] ['case.csv', 'data.csv', 'judge_succ.py', 'percent-2016-09-06-16-18-40.csv', 'report-2016-09-06-16-18-40.csv'] 3 C:\Users\michaelxiang\Desktop\get_report0906\get_report\maps\2016-09-06-16-18-40 ['PIT多渠道脱机并行测试'] ['case.csv', 'data.csv'] 4 C:\Users\michaelxiang\Desktop\get_report0906\get_report\maps\2016-09-06-16-18-40\PIT多渠道脱机并行测试 [] ['消费(传统)-TPS消费(传统)-成功率时间段2016-08-10 13-03-25-2016-08-10 13-06-25.png', '行业信息查询-TPS行业信息查询-成功率 时间段2016-08-10 13-03-25-2016-08-10 13-06-25.png', '行业帐单查询-TPS行业帐单查询-成功率时间段2016-08-10 13-03-25-2016-08-10 1 3-06-25.png']
能够看到:sql
system_dir=os.getcwd() for fname in os.listdir(system_dir): if fname.startswith('report'): os.remove(os.path.join(system_dir, fname))
这个的做用就是删除该目录下,以report
开头的文件,chrome
主要用到了将两个路径合并为一个路径,为何不能用路径A+路径B呢?
由于,os.path.join(A,B)
会自动根据系统环境,改变两个路径的链接符。
Windows系统路径之间是\
,而Linux系统路径是/
,所以用os.path.join
写出的程序兼容性就更好了。
os.path.dirname(__file__)
返回脚本的路径,可是须要注意一下几点:
NameError: name '__file__' is not defined
.py
文件的全路径如:python c:/test/test.py
则返回路径c:/test
,若是是python test.py
则返回空。os.path.abspath
用,效果会好,若是你们看过一些python架构的代码的话,会发现。常常有这样的组合:
os.path.abspath(os.path.dirname(__file__))
os.path.dirname(os.path.abspath(__file__))
返回的是.py
文件的绝对路径,这就是os.path.dirname(__file__)
的用法,其主要总结起来有:
一、不要已命令行的形式来进行os.path.dirname(__file__)
这种形式来使用这个函数
二、结合os.path.abspath()
使用
参考
查看对象的所有属性和方法,显示效果比 dir
方法好:
pip install pdir2 >>> import pdir,requests >>> pdir(requests)
pip freeze
导出当前环境中全部的 python 库列表:
$ pip install pipreqs $ pipreqs /home/project/location
Python 剪贴板:
pip install pyperclip from pyperclip import copy, paste copy('2333') # 向剪贴板写入 2333 paste() # 值为剪贴板中的内容
解析 Pip 源信息
# "PYPI_URL": "http://pypi.michael.huawei.com/iaas/product/+simple/" from pypi_simple import PyPISimple client = PyPISimple(endpoint=pypi_url) packages = client.get_project_files(whl_project)
解析 rpm 包名
pkg_name = "java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.x86_64.rpm" (name, version, release, epoch, arch) = splitFilename(pkg_name)
# 读取配置文件中的参数 try: config = sys.argv[1] except IndexError as e: print(u'运行脚本时,请加上cfg参数!', e) sys.exit(-1) print(config)
能够读取命令窗口的参数,例如python get_report.py maps.cfg
那么,这里sys.argv[1]
得到的值就是maps.cfg
。
Python Shell
pip install sh from sh import ifconfig print(ifconfig("eth0")) from sh import * sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('This is great!')
shutil.copyfile( src, dst) 从源src复制到dst中去。固然前提是目标地址是具有可写权限。抛出的异常信息为IOException. 若是当前的dst已存在的话就会被覆盖掉 shutil.move( src, dst) 移动文件或重命名 shutil.copymode( src, dst) 只是会复制其权限其余的东西是不会被复制的 shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间 shutil.copy( src, dst) 复制一个文件到一个文件或一个目录 shutil.copy2( src, dst) 在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,相似于cp –p的东西 shutil.copy2( src, dst) 若是两个位置的文件系统是同样的话至关因而rename操做,只是更名;若是是不在相同的文件系统的话就是作move操做 shutil.copytree( olddir, newdir, True/Flase) 把olddir拷贝一份newdir,若是第3个参数是True,则复制目录时将保持文件夹下的符号链接,若是第3个参数是False,则将在复制的目录下生成物理副原本替代符号链接 shutil.rmtree( src ) 递归删除一个目录以及目录内的全部内容
print('*'*20+u'转存源数据文件到结果日期文件夹'+'*'*20) shutil.copy2(data_source_path, result_file_path) shutil.copy2(case_source_path, result_file_path) print('*'*20+u'存储成功!'+'*'*20)
用来拷贝文件,复制到目标文件夹。
shutil.rmtree('maps',ignore_errors=True)
只有机上后边的参数,空目录才会删除,不然会报错。
参考:
相似dict
/int
等一些内置的类型,types模块已再也不提供了,例如tyopes.IntType
已经提供了。
参考:
重试:
pip install tenacity #限制重试次数为3次 from tenacity import retry, stop_after_attempt @retry(stop=stop_after_attempt(3)) def extract(url): info_json = requests.get(url).content.decode() info_dict = json.loads(info_json) data = info_dict['data'] save(data)
生成通用惟一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。
uuid 模块:https://docs.python.org/3/library/uuid.html
import uuid user_id = uuid.uuid4() print(user_id)
提取数据,特别是从网络中提取数据是数据科学家的重要任务之一。Wget 是一个免费的工具,用于以非交互式方式从 Web 上下载文件。它支持 HTTP、HTTPS 和 FTP 协议,经过 HTTP 代理进行检索。因为它是非交互式的,即便用户没有登陆,它也能够在后台工做。因此,若是你想下载一个网站或一个页面上的全部图片,wget 会帮助你。
安装:
$ pip install wget
示例:
import wget url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3' filename = wget.download(url) 100% [................................................] 3841532 / 3841532 filename 'razorback.mp3'
YAML 表明 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。
与 JSON 不一样,它能够存储更复杂的对象并引用本身的元素。你还能够编写注释,使其尤为适用于编写配置文件。
PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可让你在 Python 中使用 YAML。安装:
$ pip install pyyaml
而后导入到项目中:
import yaml
Remark,作Python PPT工具。
python2和python3通用性兼容性封装,openstack中使用,强烈推荐
建议掌握
协程的经典,下层使用的greenlet,建议掌握
很是高效的协程封装,想了解协程机制的话,能够深刻学习
提供了几乎全部的加解密算法,下层使用的是cryptograph,建议作基本了解
对SQL语句的封装,建议概念了解
测打桩,建议掌握
建议掌握
多进程,建议基本了解,工做中不经常使用
多线程,建议掌握,不建议使用thread(thread在python3中变为内部库_thread)
多进程/多线程队列按序执行的场景,基本了解
用于建立新进程,可用于python调用shell/bash等,建议掌握。python调用shell/bash不建议os.system/commands.*(这些方式在python3已经移除)。
用于性能分析,很是很是好用,和pstat配合食用,建议掌握。
是命令行HTTP客户端。其目标是使与Web服务的CLI交互尽量人性化。它提供了一个简单的http命令,容许使用简单天然的语法发送任意HTTP请求,并显示彩色输出。HTTPie可用于测试,调试以及一般与HTTP服务器交互。
GitHub:https://github.com/jakubroztocil/httpie
只要是稍微搞过Python与linux的都会熟悉paramiko这个犀利的库。
它完美的契合的用户操做linux机器下的全部操做,ssh ftp等等…
是一个极其简单的IT自动化系统。它处理配置管理,应用程序部署,云配置,临时任务执行和多节点编排 – 包括经过负载平衡器轻松实现零停机滚动更新等操做。
GitHub:https://github.com/ansible/ansible
从根本上讲是一项服务,能够帮助您实时监控和修复崩溃。服务器端使用Python,但它包含一个完整的API,支持在任何应用程序中使用任何语言发送事件。
GitHub:https://github.com/getsentry/sentry
是一个Python包,可用来建立复杂的批处理做业管道。可用来处理依赖项解析、工做流管理、可视化、处理故障、命令行集成等等。
GitHub:https://github.com/spotify/luigi
pip install sh
Progressbar 是 Python 中的一个文本进度条程序库,用于展现长时间运行操做的过程,从视觉上提示你程序的处理进度。
油管搬运工,可从youtube.com或其余视频平台下载视频。
GitHub:https://github.com/rg3/youtube-dl
是一个小型命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),尤为是在手边没有合适工具的时候。
GitHub:https://github.com/soimort/you-get