Python中好用的模块们

datetime模块

​ 相信我们都使用过这个模块,那么我们要实现每天定时来执行程序,就可以用一下方式来实现:

import datetime
import time def main():
while True:
while True:
now = datetime.datetime.now()# 这里可以取到系统的当前时间
if now.hour == 6 and now.minute == 30:# 取当前时间的小时和分钟,这样每天到这个设定好的小时和分钟内的时候我们就会跳出这个内循环,进入到外循环,从而执行主函数
# 当然设定时间我们也可以设定秒,但是其实设定到秒的情况下有可能无法进入函数,时间太短系统无法判定
break
if now.hour == 9 and now.minute == 30:
break
if now.hour == 12 and now.minute == 30:
break
if now.hour == 14 and now.minute == 30:
break
time.sleep(20)
# 主函数
time.sleep(60)# 这里加入睡眠60秒是为了让主函数不至于在这一分钟内一直执行,仅执行一次就好

subprocess模块

​ 这个模块主要用于python调用系统的cmd窗口并返回结果,具体实现如下.

# encoding=utf-8
import subprocess # 导入模块,没装的话自己去pip install subprocess
import sys # 常用编码
GBK = 'gbk'
UTF8 = 'utf-8' # 解码方式,一般 py 文件执行为utf-8 ,但是cmd 命令为 gbk
current_encoding = GBK popen = subprocess.Popen(['ping', 'www.baidu.com'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=1) # 重定向标准输出
while popen.poll() is None: # None表示正在执行中
r = popen.stdout.readline().decode(current_encoding)
sys.stdout.write(r) # 可修改输出方式,比如控制台、文件等 # 重定向错误输出
if popen.poll() != 0: # 不为0表示执行错误
err = popen.stderr.read().decode(current_encoding)
sys.stdout.write(err) # 可修改输出方式,比如控制台、文件等

matplotlib折线图

'''
折线图绘制的时候主要碰到了下面几个问题:
1. 标签和折线的名称不能使用中文
解决:导入一个字体模块或者不用中文,用全拼或者英文
2. 绘图时候要控制图层的大小
解决: 在刚开始绘图的时候加入plt.figure(figsize=(10, 8)),可以调整图层的大小,后面的(10,8)实际大小是乘以100,也就是1000*800的图片大小
3. 最后保存图片的时候保存jpg格式出错
解决:需要额外装一个模块,语句 pip install pillow
'''
# 例程如下
from font_set import font_set # 这里我自己写了一个字体的模块,读者应该没有,可以忽略
import matplotlib.pyplot as plt
from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] # SimHei是黑体的意思 x1 = ['06:00', '12:00', '18:00', '24:00'] # 横轴
y1 = [4, 6, 8, 23]
z1 = [5, 5, 7, 15]
a1 = [2, 9, 10, 6] # x = np.random.random_integers(1, 20, 10)
# # y = range(len(x)) fig = plt.figure(figsize=(10, 8)) # 控制图层的大小
ax = fig.add_subplot(1, 1, 1)
ax.plot(x1, y1)
for x, y in zip(x1, y1):
plt.text(x, y + 0.3, '%.0f' % y, ha='center', va='bottom', fontsize=10.5)
ax.plot(x1, z1)
for x, y in zip(x1, z1):
plt.text(x, y + 0.3, '%.0f' % y, ha='center', va='bottom', fontsize=10.5)
ax.plot(x1, a1)
for x, y in zip(x1, a1):
plt.text(x, y + 0.3, '%.0f' % y, ha='center', va='bottom', fontsize=10.5) plt.xlabel(u'时间', FontProperties=font_set)
plt.ylabel(u'延迟', FontProperties=font_set)
plt.title(u"各交易所交易延时", FontProperties=font_set)
plt.legend([u"中金所", u"上期所", u"大商所"], prop=font_set)
plt.savefig("1.jpg") # 这里要注意,要先保存再show,如果先show了保存图片就会是空白
plt.show()

importlib模块

首先我们要知道importlib模块是干嘛的,importlib是python里面标准库的一部分,他可以完成我们python中import语句的实现,另外我们可以用这个模块来自定义对象,在程序中间引入模块的时候比较方便,又称为importer.

下面我们介绍importlib的动态导入的功能:

虽然看起来动态引入非常高大上,但实际上只是给importlib模块传字符串而已,importlib模块支持我们以传入字符串的形式来引入一个模块,这是一种非得难得也非常方便的用法,比如,我们用以下小实例来证明,该实例实现了我们通过手动配置settings.py文件来自定义能够生效的方法,是django的settings.py文件的缩略版.

# 首先我们创建一个包,也就是python package,这里我们给包命名为notify
# 然后在包下面创建email.py,wechat.py,settings.py,run.py # 依次在这几个文件里面写入 # email.py
class Email(object):
def __init__(self):
pass # 发邮件需要的准备工作 def send(self, content):
print('邮件通知: %s' % content) # wechat.py
class WeChat(object):
def __init__(self):
pass # 发短信需要的准备工作 def send(self, content):
print('微信通知: %s' % content) # run.py
import notify
notify.send_all("发工资啦~") # settings.py
# 该文件里面写的是各个方法的路径
NOTIFY_LIST = [
'notify.email.Email',
'notify.wechat.WeChat',
] # __init__.py from notify import settings
import importlib
# 我们在这里导入importlib模块
def send_all(content):
for module_path in settings.NOTIFY_LIST:# 这里循环的是settings.py文件里我们配置的路径
module, class_name = module_path.rsplit('.', maxsplit=1)
# 路径以点右切割得到的就是 -> module = 'notify.email' class_name = 'Email'
mod = importlib.import_module(module)# 这里传过来的就是一个字符串,importlib支持字符串导入模块,所以就相当于 from notify import email
cls = getattr(mod, class_name) # 利用反射获取到模块中的类的变量名
obj = cls() #加括号,类实例化产生对象
obj.send(content) # 对象直接调用方法,content就是要传过去的内容

以上用字符串来直接导入模块的方法十分方便,推荐使用,虽然现在的框架大部分已经把这些东西封装好了,我们直接调用就可以了....不过了解一下原理也是好的.

未完待续,来日方长...

Python中好用的模块们的更多相关文章

  1. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  2. Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  3. python中根据字符串导入模块module

    python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlib modname = 'datetime' date ...

  4. python中的第三方日志模块logging

    基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...

  5. Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)

    本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...

  6. python中time、datetime模块的使用

    目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1 ...

  7. python中的logging日志模块

    日志是程序不可或缺的一部分.它可以记录程序的运行情况,帮助我们更便捷地发现问题,而python中的logging日志模块给我们提供了这个机会. logging给我们提供了五种函数用来输出日志:debu ...

  8. python中常⽤的excel模块库

    python中常用的excel模块库&安装方法 openpyxl openpyxl是⼀个Python库,用于读取/写⼊Excel 2010 xlsx / xlsm / xltx / xltm⽂ ...

  9. Python中time和datetime模块的简单用法

    python中与时间相关的一个模块是time模块,datetime模块可以看为是time模块的高级封装. time模块中经常用到的有一下几个方法: time()用来获取时间戳,表示的结果为从1970年 ...

随机推荐

  1. Perl 运算符

    Perl 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,如: 3+2=5. Perl 语言内置了丰富的运算符,我们来看下常用的几种: 算术运算符 比较运算符 逻辑运算符 赋值运算符 位 ...

  2. Photon Server的服务器端配置

    Photon Server与Unity3D的交互分为3篇博文实现 (1)Photon Server的服务器端配置 (2)Photon Server的Unity3D客户端配置 (3)Photon Ser ...

  3. Java习题10.25

    Java习题10.25 1. 实际上这道题考查的是两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类 ...

  4. java执行顺序之深入理解clinit和init

    原文地址:https://blog.csdn.net/qq_36522306/article/details/80582758 前言: 最近研究了深入理解JVM这本书中的知识,对java中各部分执行的 ...

  5. 常用的一些 linux 指令

    1. mv linux下重命名文件或文件夹使用mv既可实现. 1.1 重命名 a.将一个名为abc.txt的文件重命名为1234.txt #mv abc.txt .txt b. 将目录A重命名为B ( ...

  6. 分布式存储glusterfs

    什么是glusterfs? Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量的数干客户端,通过网络互联成一个并行的网络文件系统.具有可扩展性.高性能.高可用性等 ...

  7. 20140425 malloc和new不同 dynamic何时返回0

    1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...

  8. ps-奇幻金鱼彩妆

    1.打开背景图,拷贝一份防止出错 2增加色相饱和度 改变全局的饱和度.这是 为了改变嘴唇的颜色.其他变色的地方可以通过添加蒙版,然后用背景色为黑色的画笔擦掉 3给眼睛上加上金鱼  置入图片   类型选 ...

  9. POJ Evacuation /// 二分图最大匹配

    题目大意: 在一个n*m的房间中 ‘X’为墙 ‘D’为门 ‘.’为人 门只存在与外围 人每秒钟只能向四连通区域走一步 门比较狭窄 每秒钟只能通过一个人 求所有人逃脱的最短时间 如果不可能则输出impo ...

  10. POJ 2763 /// 基于边权的树链剖分

    题目大意: 给定n个结点,有n-1条无向边,给定每条边的边权 两种操作,第一种:求任意两点之间路径的权值和,第二种:修改树上一点的权值. 因为是一棵树,可以直接把 u点和v点间(假设u为父节点,v为子 ...