zoukankan      html  css  js  c++  java
  • python 常用标准库

    标准库和第三方库第一手资料:

    在线: 官方文档(https://docs.python.org/

    离线:交互式解释器(dir()、help()函数),IPython(tab键提示、?、??)

    一、             日期和时间(https://docs.python.org/3/library/datetime.html

      datetime模块

      date类-实例属性:

      year

      month

      day

      time类-实例属性:

      hour

      minute

      second

      microsecond

      datetime类

      date()实例方法->date对象

      time()实例方法->time对象

      now()类方法->datetime对象

      strftime(str_format)实例方法->(datetime->str)

      Y:4位年份

      y:后2位年份

      m:月份

      d:日(月内第几天)

      H:小时(24小时制)

      I:小时(12小时制)

      M:分钟

      S:秒

      f:微秒

     

      strptime(dt_str, str_format)类方法->(str->datetime)

      timedelta类(时间差,两个datetime对象 相减 得到 timedelta对象)

      days属性

      seconds属性

      microseconds属性

      total_seconds()方法

    from datetime import  datetime, timedelta

     

    dt_begin = datetime.now()

    for i in range(10 ** 8):

        temp = 3.2 / 2.3

    dt_end = datetime.now()

    dt_diff = dt_end - dt_begin

    print('花费 {0.seconds} 秒, {0.microseconds} 毫秒'.format(dt_diff))

     

      time():时间戳(1970.01.01 00:00:00到现在经过的秒)

      sleep(seconds):延时

      calendar

      setfirstweekday(weekday),设置每周的起始日期码。0(星期一)到6(星期日)。

      calendar(year,w=2,l=1,c=6):返回一个多行字符串格式的year年年历。

      3个月一行,间隔距离为c。

      每日宽度间隔为w字符。

      每行长度为21* W+18+2* C。

      l是每星期行数。

      isleap(year):判断闰年

      weekday(year, month, day) :返回给定日期的星期日期码

      monthrange(year, month):返回给定月份的日期范围(元组:(第一天的星期日期码,月天数))

            

    二、             数据格式

      JSON:JavaScript对象表示法。(json在Python中叫做dict,在JS中叫做json)。

      Json字符串(str_obj):所有的字符串只能用双引号(")不能用单引号(')。

      Json字符串必须要有内容(len(str_obj) > 0),不能是空字符串('')

      json

      load(fp):文件对象->python内置对象

      loads(str_obj):str->python内置对象(js:JSON.parse(str_obj))

      object_pairs_hook,,控制数据如何转换,是一个继承自字典dict的类

      dump(obj, fp):python内置对象->文件对象

      dumps(obj):python内置对象->str(js: JSON.stringify(obj, null, 4))

      ensure_ascii: (默认值:True,会将CJK字符转成Unicode嘛,以符合ASCII规范)。设置为False,可保证原样输出。

      indent:(默认值:None,将会没有缩进和多余的空白输出,全部挤到一行。)。调试中,一般设置为4,和Python中风格一致。正式环境(比如web后端输出),不需要缩进。

      csv

      writer(wfp) (写入器) wfp: 可写的文件对象(open: newline)

      writerow(list_obj)

      writerows(2d_list_obj)

      reader(rfp) (读取器) rfp: 可读的文件对象

     

      pickle

      dump(obj, wfp):(obj -> wfp),无返回值

      dumps(obj):(obj -> bytes),返回值bytes类型

      load(rfp):(rfp -> obj),返回值为obj,打开的必须是Python的pickle生成的文件。

      loads(bytes_obj):(bytes -> obj),返回值为obj,加载的必须是Python的pickle的字节串,可以是dumps()方法生成的,也可以是从dump()方法生成的文件中以二进制方式读取的。

    说明:

    obj为Python内置类型(list、dict、str等)对象

    wfp为可写的文件对象

    rfp为可读的文件对象

    bytes为二进制字符串(字节串)

    三、             系统调用

      os

      getenv():获取环境变量

      putenv():设置环境变量

      environ 从系统启动时开始加载的环境变量(数据共享),dict兼容类型,可修改。

      注意: os._Environ中有一个字典,字典中存储了环境变量,在Python进程启动时,就会获取系统中的环境变量,放入其中。

      system():系统调用,需要传递一个必须的参数,字符串类型。

      sep:目录分隔符(Windows: \, Linux和Max OS X: /)

      linesep:行结束符(行分隔符)

      sys

      argv:命令行参数

      path: Python中import时的搜索路径,list类型,可修改

      modules:Python中已经加载了的模块,dict类型,可修改

      stdin/stdout/stderr:标准 输入、(正常)输出、错误输出

      platform

      platform():平台

      version():内核版本

      architecture():CPU架构

      machine():操作系统类型(I386,AMD64)。

      node():本机网络名

      processor():处理器信息

      system():系统(Windows)

      uname():汇总信息

      python_version():Python版本

    补充

    第三方-日期时间操作库:python-dateutil

    安装:

    pip install python-dateutil

    解析时间:

    import dateutil.parser as dt_parser

    dt_str = '2018-08-09 12:23:34'

    dt = dt_parser.parse(dt_str)

    第三方-数据操作库:pandas

    安装:

    pip install pandas

    解析时间:

    import pandas as pd

    csv_path = r'C:\User\XYZ\abc.csv'

    df = pd.read_csv(csv_path)

    标准库-读取json到有序字典:

    import json

    from collections import OrderedDict

    dict_obj = json.loads(str_data, object_pairs_hook=OrderedDict)

    Json扩展应用(豆瓣标签爬虫):

    # -*- coding: utf-8 -*-

    import json

    import requests

    resp = requests.get('https://movie.douban.com/j/search_tags?type=movie&source=')

    if resp.ok:

        try:

            data = json.loads(resp.text)

        except Exception as e:

            print(e)

        else:

            print(data)

    else:

        print('请求失败')

    bytes与str转换:

    bytes_obj. decode(encoding='utf-8', errors='strict')

             bytes.decode()参数:

                      encoding:指明字节串是以哪种编码保存的。默认值为'utf-8'。

                      errors:如果出错了,如何处理。可能的值为'strict'(严格处理,引发异常)、'ignore'(忽略,程序继续)、'replace'(替换,程序继续)。默认值为'strict'。

       str.encode(=, ='strict')

                       encoding:指定了转成哪种编码。默认值为'utf-8'。

                       errors:如果出错了,如何处理。默认值为'strict'。

             chardet:第三方库,专用于编码判断,使用步骤如下:

    1. 以二进制方式读取文件,得到字节串
    2. 调用chardet.detect()方法,参数为上一步得到的字节串。
    3. 识别结果为字典类型,有一个名为'encoding',就是识别到的编码。但是,有可能判断失败,所以需要判断结果是否有效。

             chardet示例代码

    # -*- coding: utf-8 -*-

    # 模块倒入

    try:

        import chardet

    except ImportError:

        # 如果导入第三方库出错,一般是未安装

        # 调用pip安装

        import os

        os.system('pip install chardet')

        # 安装完成后重新导入

        import chardet

    # 要判断编码的内容

    bys = b'hehe'

    # 判断编码

    det = chardet.detect(bys)

    # 获取编码

    encoding = 'None'

    # 可能检测失败,需要判断

    if isinstance(det, dict) and 'encoding' in det:

        encoding = det['encoding']

    # 如果获取到了编码

    if bool(encoding):

        # TODO:得到编码后做的事,以下是示例

        # 就算正确得到了编码,也要防止存在不可解码的字符

        # 所以需要设置errors参数值为'ignore'或'replace',一般用前者

        str_obj = bys.decode(encoding, errors='ignore')

        print(str_obj)

        # TODO: 对字符串操作

        pass

    else:

        print('编码检测失败,请手动处理')

  • 相关阅读:
    Solr查询参数sort(排序)
    使用SolrNet访问Solr-5.5.0
    java impl
    Solr Facet 搜索时,facet.missing = true 的真正含义
    为solr增加用户验证
    每日晨读_20140705
    说说常用的服务器操作
    如何添加自定义脚本到开机自启动
    记录一个mysql连接慢的问题
    javascript时间戳和日期字符串相互转换
  • 原文地址:https://www.cnblogs.com/sxqfuture/p/9981848.html
Copyright © 2011-2022 走看看