apscheduler

collections

  • collections.OrderDict
  • collections.defaultdict

Python 标准库提供了 collections 模块。这个方便的附加组件可以为你提供更多数据类型。

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!")

ConfigParser

[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

__ future__模块允许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的:

from __future__ import print_function
print("Hello World!")

functools

fake-useragent

伪装浏览器身份:

pip install fake-useragent
from fake_useragent import UserAgent
ua = UserAgent() ua.ie
ua.msie
ua.opera
ua.chrome

getsub

下载视频字幕:

pip install getsub
getsub <视频路径>

gy

生成 .gitignore 文件:

#https://www.gitignore.io/
$ pip install gy
$ gy generate python java lisp

id-validator

中华人民共和国居民身份证、中华人民共和国港澳居民居住证以及中华人民共和国台湾居民居住证号码验证工具(Python 版):

itertools

MyQR

生成 Python 艺术二维码

pip install MyQR
myqr https://github.com
myqr https://github.com -v 10 -l Q

ngxtop

解析 nginx 访问日志并格式化输出

pip install ngxtop
$ ngxtop

operator

os

os.walk

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']

可以看到:

  • root:执行os.walk时的每次的目录,会改变,因为会遍历目录下的每一层文件夹;
  • dirs: 目录下有几个文件夹,以列表存储文件夹名;
  • files: 目录下的文件,以列表存储文件名;

os.listdir

system_dir=os.getcwd()
for fname in os.listdir(system_dir):
if fname.startswith('report'):
os.remove(os.path.join(system_dir, fname))

这个的作用就是删除该目录下,以report开头的文件,

os.path

os.path.join

主要用到了将两个路径合并为一个路径,为什么不能用路径A+路径B呢?

因为,os.path.join(A,B)会自动根据系统环境,改变两个路径的连接符。

Windows系统路径之间是\,而Linux系统路径是/,因此用os.path.join写出的程序兼容性就更好了。

os.path.dirname 获取文件目录

os.path.dirname(__file__)返回脚本的路径,但是需要注意一下几点:

  1. 必须是实际存在的.py文件,如果在命令行执行,则会引发异常NameError: name '__file__' is not defined
  2. 在运行的时候如果输入完整的执行的路径,则返回.py文件的全路径如:

    python c:/test/test.py 则返回路径c:/test,如果是python test.py 则返回空。
  3. 结合os.path.abspath用,效果会好,如果大家看过一些python架构的代码的话,会发现。

经常有这样的组合:

  • os.path.abspath(os.path.dirname(__file__))
  • os.path.dirname(os.path.abspath(__file__))

返回的是.py文件的绝对路径,这就是os.path.dirname(__file__)的用法,其主要总结起来有:

1、不要已命令行的形式来进行os.path.dirname(__file__)这种形式来使用这个函数

2、结合os.path.abspath()使用

参考

pdir2

查看对象的全部属性和方法,显示效果比 dir 方法好:

pip install pdir2
>>> import pdir,requests
>>> pdir(requests)

pipreqs

pip freeze 导出当前环境中所有的 python 库列表:

$ pip install pipreqs
$ pipreqs /home/project/location

pyperclip

Python 剪贴板:

pip install pyperclip
from pyperclip import copy, paste copy('2333') # 向剪贴板写入 2333 paste() # 值为剪贴板中的内容

pypi_simple

解析 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)

rpmUtils

解析 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)

sys

sys.argv

# 读取配置文件中的参数
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

sh

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

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 ) 递归删除一个目录以及目录内的所有内容

shutil.copy2

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

shutil.rmtree('maps',ignore_errors=True)

只有机上后边的参数,空目录才会删除,否则会报错。

参考:

types

类似dict/int等一些内置的类型,types模块已不再提供了,例如tyopes.IntType已经提供了。

参考:

tenacity

重试:

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)

uuid

生成通用唯一标识符(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

提取数据,特别是从网络中提取数据是数据科学家的重要任务之一。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 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。

与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。

PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可以让你在 Python 中使用 YAML。安装:

$ pip install pyyaml

然后导入到项目中:

import yaml

functools

Remark,做Python PPT工具。

six

python2和python3通用性兼容性封装,openstack中使用,强烈推荐

requests

建议掌握

eventlet

协程的经典,下层使用的greenlet,建议掌握

greenlet

非常高效的协程封装,想了解协程机制的话,可以深入学习

pycrypto 安全

提供了几乎所有的加解密算法,下层使用的是cryptograph,建议做基本了解

SQLAlchemy

对SQL语句的封装,建议概念了解

Mock

测打桩,建议掌握

Unittest

建议掌握

Multiprocessing

多进程,建议基本了解,工作中不常用

Threading

多线程,建议掌握,不建议使用thread(thread在python3中变为内部库_thread)

Queue

多进程/多线程队列按序执行的场景,基本了解

Subprocess

用于创建新进程,可用于python调用shell/bash等,建议掌握。python调用shell/bash不建议os.system/commands.*(这些方式在python3已经移除)。

Profile/cProfile

用于性能分析,非常非常好用,和pstat配合食用,建议掌握。

时间模块相关

arrow

Delorean

开发工具

HTTPie

是命令行HTTP客户端。其目标是使与Web服务的CLI交互尽可能人性化。它提供了一个简单的http命令,允许使用简单自然的语法发送任意HTTP请求,并显示彩色输出。HTTPie可用于测试,调试以及通常与HTTP服务器交互。

GitHub:https://github.com/jakubroztocil/httpie

Linux

paramiko

只要是稍微搞过Python与linux的都会熟悉paramiko这个犀利的库。

它完美的契合的用户操作linux机器下的所有操作,ssh ftp等等…

运维

Ansible

是一个极其简单的IT自动化系统。它处理配置管理,应用程序部署,云配置,临时任务执行和多节点编排 – 包括通过负载平衡器轻松实现零停机滚动更新等操作。

GitHub:https://github.com/ansible/ansible

Sentry

从根本上讲是一项服务,可以帮助您实时监控和修复崩溃。服务器端使用Python,但它包含一个完整的API,支持在任何应用程序中使用任何语言发送事件。

GitHub:https://github.com/getsentry/sentry

Luigi

是一个Python包,可用来创建复杂的批处理作业管道。可用来处理依赖项解析、工作流管理、可视化、处理故障、命令行集成等等。

GitHub:https://github.com/spotify/luigi

好玩的工具

sh

pip install sh

Progressbar

Progressbar 是 Python 中的一个文本进度条程序库,用于展示长时间运行操作的过程,从视觉上提示你程序的处理进度。

colorama

YouTube-dl

油管搬运工,可从youtube.com或其他视频平台下载视频。

GitHub:https://github.com/rg3/youtube-dl

You-Get

是一个小型命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),尤其是在手边没有合适工具的时候。

GitHub:https://github.com/soimort/you-get

参考

Python 必备好库 - 好工具收藏的更多相关文章

  1. Python安装第三方库文件工具——pip

    Python安装第三方库文件一般使用pip. 1.pip的安装 (1)下载pip 进入https://pypi.python.org/pypi/pip#downloads

  2. Python 库整理【收藏】

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  3. python基础课程_学习笔记15:标准库:有些收藏夹——fileinput

    标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...

  4. python基础课程_学习笔记13:标准库:有些收藏夹——sys

    标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...

  5. python基础课程_学习笔记20:标准库:有些收藏夹——os

    标准库:有些收藏夹 os os模块为您提供访问多个操作系统服务特征. os和它的子模块os.path还包含一些用于检查.构造.删除文件夹和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和 ...

  6. Python必备库

    Python必备库 --default-timeout=100避免网络延迟错误:-U给管理员权限. Python基础库 pip --default-timeout=100 install -U pyg ...

  7. Python 库/模块/工具收集

    1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...

  8. 全栈Python 必备库

    强大的库: 转自:微信公众号 Python最棒的地方之一,就是大量的第三方库,覆盖之广,令人惊叹.Python 库有一个缺陷就是默认会进行全局安装.为了使每个项目都有一个独立的环境,需要使用工具vir ...

  9. 各种 Python 库/模块/工具

    1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...

随机推荐

  1. [ English ] 俚语 “Ping me=打我电话”

    有次做项目的时候跟一个美国人通过MSN讨论一个问题.突然他说了一句,“Can you ping me in 15 minutes?” Ping Me,什么意思啊? 首先我们来看看“Ping”的原意: ...

  2. python ---多线程thread

    thread 在数据预处理的时候用处不大,因为有GIL 锁 查看thread信息 import threading print(threading.current_thread()) print(th ...

  3. vm虚拟机出现Disk启动失败

    https://jingyan.baidu.com/article/a501d80c0e45b8ec630f5ed6.html

  4. How to export a model from SolidWorks to Google SketchUp

    How to export a model from SolidWorks to Google SketchUp While Google SketchUp is not a professional ...

  5. 【爬虫】biqukan抓取2.0版

    #!python3.7 import requests,sys,time,logging,random from lxml import etree logging.basicConfig(level ...

  6. GZIPOutputStream GZIPInputStream

    GZIP is appropriate for single data stream. Example: Compress one file public class Demo8 {  public ...

  7. Groovy常用编程知识点简明教程

    概述 Groovy 是一门基于JVM的动态类型语言,可以与 Java 平台几乎无缝融合(与Java代码一样编译成字节码). 使用 Groovy ,可以增强 Java 应用的灵活性和可扩展性,提升开发效 ...

  8. 进程表示之进程ID号

    UNIX进程总是会分配一个号码用于在其命名空间总唯一地标识它们,该号码称作进程ID号,简称PID. 1.进程ID 但每个进程除了PID外,还有其他的ID,有下列几种可能的类型: (1)处于某个线程组中 ...

  9. 51Nod 1090 3个数和为0

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090 思路:排序 三个for循环 但是要控制循环 不能从头开 ...

  10. [转载]ORA-01502错误成因和解决方法

    检查一下索引状态,我们会注意到索引已经是“UNUSABLE”了.SQL> select index_name,index_type,tablespace_name,table_type,stat ...