python3 标准库相关

day10(3)

python3 标准库相关

操作系统接口

os模块提供了不少与操作系统相关联的函数

# 引入
import as

针对日常的文件和目录管理,shutil模块提供了一个易于使用的高级接口

#引入
import shutil
shutil.copyfile('data.db','archive.db')
shutil.move('/build','installdir')

文件通配符

glob模块提供了一个函数,用于从目录通配符搜索中生成文件列表

improt glob
glob.glob('*.py')

命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表的形式存放在 sys 模块的 argv 变量。

命令行 python demo.py on two three

import sys
print(sys.argv)

错误输出重定向和程序终止

sys还有stdout,stdin,stderr属性,即使在stdout被重定向时,后者也可以用于显示警告和错误信息

大多数脚本的重定向终止都使用 sys.exit()

字符串正则匹配

re模块为高级字符串处理提供了正则表达式工具,对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案。

import re
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
# ['foot', 'fell', 'fastest']
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
# 'cat in the hat'

数学

math模块为浮点数运算提供了对底层 C函数库的访问

import math
math.cos(math.pi / 4)
math.log(1024 , 2)

random提供了生成随机数的工具

import random
random.choice(['apple','pear','banana'])
random.sample(range(100), 10)
random.random()
random.randrange(6)

访问互联网

  1. 用于处理从 urls 接收的数据 urllib.request

     from urllib.request import urlopen
     for line in urlopen('http://www.baidu.com'):
     	line = line.decode('utf-8')
     	if 'EST' in line or 'EDT' in line:
     		print(line)
    
  2. 用于发送电子邮件的 smtplib

     improt smtplib
     server = smtplib.SMTP('localhost')
     server.sendmail('soothsayer@163.com')
     server.quit()
    

需要本地有一个在运行的邮件服务器

日期和时间

datetime模块为日期和时间处理同时提供了简单和复杂的方法

form datetime import date
#今天
today = datetime.date.today()
#昨天 
yesterday = today - datetime.timedelta(days=1)
#上个月 
last_month = today.month - 1 if today.month - 1 else 12
#当前时间戳 
time_stamp = time.time()
#时间戳转datetime
 datetime.datetime.fromtimestamp(time_stamp)
#datetime转时间戳 
int(time.mktime(today.timetuple()))
#datetime转字符串 
today_str = today.strftime("%Y-%m-%d")
#字符串转datetime 
today = datetime.datetime.strptime(today_str, "%Y-%m-%d")
#补时差 
today + datetime.timedelta(hours=8)

数据压缩

zlib模块支持通用的数据打包和压缩格式: zlib,gzip,bz2,zipfile,tarfile

import zlib
s = b'witch which has which witches wrist watch'
t = zlib.compress(s)
zlib.decompress(t)
zlib.crc32(s)

性能度量

from timeit import Timer
Timer('t=a;a=b;b=t','a=1;b=2').timeit()

相对于 timeit 的细粒度, profilepstats 模块提供了真毒更大代码块的时间度量工具

测试模块

doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。
测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。
通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致

def average(values):
	return sum(values) / len(values)

import doctest
doctest.testmod()	# 自动验证嵌入测试

unittest模块不像 doctest 模块那么容易使用,但它可以在一个独立的文件中提供一个更全面的测试集

import unittest
class TestStatisticalFunctions(unittest.TestCase):
	def test_average(self):
		self.assertEqual(average([20, 30, 70]), 40.0)
		self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
		self.assertRaises(ZeroDivisionError, average, [])
		self.assertRaises(TypeError, average, 20, 30, 70)

unittest.main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值