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好用的模块_Python中好用的模块们相关推荐

  1. python 当前时间的前一天_python中time、datetime模块的使用

    python中time.datetime模块的使用 1.前言 如果您从事过python web的开发,那一定有过这样的经历,对于各种复杂繁琐的业务逻辑,掺杂着各种各样的时间约束,让人很容易搞的头晕眼花 ...

  2. python解析html xml最好的模块_python中处理xml的模块哪个好?

    python中可以使用BeautifulSoup4或pyQuery模块处理xml文件.pyQuery模块比较适合于对CSS选择器等的支持,BeautifulSoup4模块使用简单. Beautiful ...

  3. python ftp模块_python中的FTP文件模块

    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接from ftplib import FTP #加载 ...

  4. python 包和模块_Python中的包和模块实例

    一.实例和结果 1)实例的结构和具体的文件: PyPackage │ PyCommonM.py │ __init__.py │ ├─p1Package │ P1M.py │ P1MC.py │ __i ...

  5. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  6. python中copy怎么用_python中的拷贝copy模块怎么使用?

    原标题:python中的拷贝copy模块怎么使用? 许多人都见过这样一个游戏,让10个人通过耳边的悄悄话逐个传递一个信息,我们会发现在传递的过程中信息不断被修改,到了最后已经面目全非.今天小编就向大家 ...

  7. python中sys用法_python中os和sys模块的区别与常用方法总结

    python 的 python中os和sys模块的区别与常用方法总结 前言 本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看 ...

  8. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  9. python中导入模块的方式_Python中几种导入模块的方式总结

    模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入.常见的方式有如下几种: 1 . import >>> import sys >>> sys.path ...

  10. python中自带的模块_python中的模块详解

    概念 python中的模块是什么?简而言之,在python中,一个文件(以".py"为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件.模块可以被项 ...

最新文章

  1. AI一分钟 | 别了老司机!深圳无人驾驶公交车霸气上路;乌镇上演最强饭局,丁磊王兴刘强东大宴宾客
  2. ecplise SpringCould搭建过程---创建SpringCould父工程
  3. matlab图像中心坐标的确定,已知散点图中各点的坐标,如何确定散点图的中心点坐标?Matlab? 爱问知识人...
  4. div超出不换行_一日一技:XPath不包含应该怎么写?
  5. 通信网络基础期末复习-第六章-拥塞控制
  6. typedef struct 是什么意思
  7. MDI窗体简单方法(调用,闪屏)
  8. 信息安全工程师笔记-恶意代码防范技术原理
  9. 打开office 文档慢的小技巧1 更改默认打印机
  10. iOS程序员必须知道的Android要点
  11. 剑指offer面试题66. 构建乘积数组
  12. JavaScript编程规范-有利于效率和可读性
  13. java 保存微信表情_【java】【mysql】存储微信表情emoji表情
  14. 信锐(SUNDRAY)无线控制器wifi无线上网短信认证设置流程
  15. 双系统卸载Linux,重装Deepin
  16. 快速解决打印机后台程序服务没有运行的问题
  17. Mac CAD 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  18. python主动推送链接至Bing站长平台分分钟让必应收录你的网页-必应SEO窍门
  19. 2019CISCN web题赛-JustSoSo;love_math(复现)
  20. 图书管理系统 (单链表实现,C++及文件操作,超详细)

热门文章

  1. 使用opencv的nonfree模块
  2. 文件的创建、删除、移动和查找
  3. Android_获取屏幕大小的两种方法
  4. asp.net中的窗体身份验证(完整篇之三:用户登录页面)
  5. C# 线程同步 信号量 Semaphore
  6. 利用注册表修改桌面背景
  7. java获取当前服务器用户_从授权服务器获取资源服务器中的用户角色
  8. 线上故障排查大体思路
  9. JVM初识之自定义类加载器
  10. spring源码-@Autowired、@Resource注解底层原理