#!/usr/bin/python
#-*-coding:gbk-*-

#Python3 标准库概览
'''
操作系统接口
os模块提供了不少与操作系统相关联的函数。
建议使用 "import os" 风格而非 "from os import *"。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。
在使用 os 这样的大型模块时内置的 dir() 和 help() 函数非常有用
'''
import os
print(os.getcwd())

#针对日常的文件和目录管理任务,:mod:shutil 模块提供了一个易于使用的高级接口:
import shutil
shutil.copy("from", "to")
shutil.move("file", "dir")

#文件通配符
#glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:
import glob
print(glob.glob("*.py"))

#命令行参数
#通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量
import sys
print(sys.argv)

#错误输出重定向和程序终止
#sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。
import sys
sys.stderr.write("出错了")
#大多脚本的定向终止都使用 "sys.exit()"。

'''
字符串正则匹配
re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案
'''
import read
re.findall(r"\bf[a-z]*", "which foot or hand fell fastest")
#如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试:
str1 = "tea for too"
str1.replace("too", "two")
print(str1)

#数学,math模块为浮点运算提供了对底层C函数库的访问:
import math
print(math.cos(math.pi / 4))

#random提供了生成随机数的工具。
import random
print(random.choice(["apple", "pear", "banana"]))
print(random.sameple(range(100), 10))
print(random.random())
print(random.randrange())

'''
访问 互联网
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls
接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:
'''
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
import smtplib
server = smtplib.SMTP("localhost")   #需要本地有一个在运行的邮件服务器
server.sendmail("805316824@qq.com", "hejing@yf.com")
server.quit()

'''
日期和时间
datetime模块为日期和时间处理同时提供了简单和复杂的方法。
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。
该模块还支持时区处理
'''
from datetime import date
now = date.today()
print(now)
now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")

birthday = date(2000, 1, 1)
age = now - birthday
print(age.days)

'''
数据压缩
以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile
'''
import zlib
s = "ahsuidhaisjdd"
print(len(s))
z = zlib.compress(s)
print(len(z))
s = zlib.decompress(z)
print(s)
print(len(s))
print(zlib.crc32(s))

'''
性能度量
有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。
例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。
'''
from timeit import Timer
Timer("t = a; a = b; b = t", "a = 1; b = 2").timeit()
Timer("a, b = b, a", "a = 1; b = 2").timeit()
#相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。

'''
测试模块
开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试
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(10,20,30), 20)
        self.assertRaises(ZeroDivisionError, average, [])
        self.assertRaises(TypeError, average, 10, 20, 30)
unittest.main()   # Calling from the command line invokes all tests

#关于urlopen的补充
##处理get请求,不传data,则为get请求
import urllib
from urllib.request import urlopen
from urllib.parse import urlencode

url = "http://www.xxxx.com/login"
data = {"username" : "admin", "password" : 123456}
req_data = urlencode(data) #将字典类型的请求数据转变为url编码
res = urlopen(url + '?' + req_data)   #通过urlopen方法访问拼接好的url
res = res.read().decode()   #read()方法是读取返回数据内容,decode是转换返回数据的bytes格式为str
print(res)

#处理post请求,如果传了data,则为post请求
import urllib
from urllib.request import urlopen
from urllib.parse import urlencode

url = "http://www.xxxx.com/login"
data = {"username" : "admin", "password" : 123456}
data = urlencode(data) #将字典类型的请求数据转变为url编码
data = data.encode("ascii")   #将url编码类型的请求数据转变为bytes类型
req_data = Request(url, data)   #将url和请求数据处理为一个Request对象,供urlopen调用
with urlopen(req_data) as res:
    res = res.read().decode()   read()方法是读取返回数据内容,decode是转换返回数据的bytes格式为str
print(res)

python系列十七:Python3 标准库概览的更多相关文章

  1. python023 Python3 标准库概览

    Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...

  2. 吴裕雄--天生自然python学习笔记:Python3 标准库概览

    操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python ...

  3. Python3 标准库概览

    操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python ...

  4. 8.Python3标准库--数据持久存储与交换

    ''' 持久存储数据以便长期使用包括两个方面:在对象的内存中表示和存储格式之间来回转换数据,以及处理转换后数据的存储区. 标准库包含很多模块可以处理不同情况下的这两个方面 有两个模块可以将对象转换为一 ...

  5. 7.Python3标准库--文件系统

    ''' Python的标准库中包含大量工具,可以处理文件系统中的文件,构造和解析文件名,还可以检查文件内容. 处理文件的第一步是要确定处理的文件的名字.Python将文件名表示为简单的字符串,另外还提 ...

  6. 1.Python3标准库--前戏

    Python有一个很大的优势便是在于其拥有丰富的第三方库,可以解决很多很多问题.其实Python的标准库也是非常丰富的,今后我将介绍一下Python的标准库. 这个教程使用的书籍就叫做<Pyth ...

  7. Python3 标准库

    Python3标准库 更详尽:http://blog.csdn.net/jurbo/article/details/52334345 文本 string:通用字符串操作 re:正则表达式操作 diff ...

  8. 比较两个文件的异同Python3 标准库difflib 实现

    比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...

  9. python3标准库总结

    Python3标准库 操作系统接口 os模块提供了不少与操作系统相关联的函数. ? 1 2 3 4 5 6 >>> import os >>> os.getcwd( ...

随机推荐

  1. 【Android界面实现】View Animation 使用介绍

        转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992     我们能够使用view animation 动画系统来给View控件加入tween动画(下称& ...

  2. Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向

    Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主    过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) ...

  3. python模块学习之warnings

    warnings.warn(message, category=None, stacklevel=, source=None) 发出警告,或者忽略它或引发异常. category参数(如果给定)必须是 ...

  4. JS高程3:错误处理和调试

    浏览器打开控制台的快捷键 Ctrl+shift+I try-catch语句 语法 try{ // 可能会导致错误的代码 } catch(error){ // 在错误发生时怎么处理 } 可以自定义错误信 ...

  5. PHPEXCEL在thinkphp中封装成类使用

    PHPEXCEL在thinkphp中封装成类使用 标签: phpexcel导出导入thinkphp -- : 435人阅读 评论() 收藏 举报 分类: php() 版权声明:本文为博主原创文章,未经 ...

  6. 河南省第七届ACM程序设计大赛赛后总结

    我们学校ACM集训开始于4月5号(清明节),5月25日在郑州解放军信息工程大学举办,集训耗时50天,但是感觉效果还行,但是也不是太好:我们也已经尽力了,虽然说只拿了个银牌,每份收获的背后,都会有辛勤的 ...

  7. 接口测试脚本之Jsoup解析HTML

    第一次接触jsoup还是在处理收货地址的时候,当时在写一个下单流程,需要省市区id以及详细门牌号等等,因此同事介绍了jsoup,闲来无事,在此闲扯一番! 1.我们来看下,什么是jsoup,先来看看官方 ...

  8. H3C-WA2210升级

    前几天升级了2210固件,做个记录 首先吐槽一点:华为官方给出的公共下载账号yx800根本没用..下不了官方提供的固件资料 组网准备: 升级之前要先看看原机版本(dis ver): 在升级版本之前,请 ...

  9. java printf long

    System.out.printf("%d\n", 1000000000000000000L); 

  10. 使用Fiddler调试线上JS代码

    在下面的命令框输入“select script”回车来筛选js请求 将HTTP请求重定向到本地的文件,进行web调试.这种调试方式不需要发布到线上再验证,避免了修改不成功.对用户造成影响的风险 左边一 ...