zoukankan      html  css  js  c++  java
  • python参考手册--第9章

    1.读取命令行选项

    (1)sys.args

    python启动时,命令行选项设置在列表sys.args中。

    sys.args[0]:xxx.py

    sys.args[1:]: 其他参数

    (2)optparser

    复杂参数可以使用optparser模块处理:

    USAGE = 'usage: python mymodule.py [cid] -l [level] -i [interval]'

    import optparser

    parser  = optparser.OptionParser()

    parser.add_option("-i",,dest='interval')

    parser.add_option('-l',dest='level')

    parser.set_defaults(level=0)

    opts,args = parser.parse_args()

    if len(args)<1:

      print USAGE 

      sys.exit(1)

    cid = args[0]

    interval= opts.interval

    level = opts.level

    2.环境变量

    os.environ访问及修改环境变量:

    import os

    path = os.environ['PATH']

    3.文件及文件对象

    f  = open('out.txt','w')#r,w,a   +,b,

    f作为文件对象可以进行如下操作:

    f.read([n])

    f.readline([n])

    f.write(s)

    f.writelines(lines)

    f.close()

    f.tell()

    f.flush()

    f.next()

    可以通过EOF来控制文件读取:

    while True:

      line = f.readline()

      if not line:

        break

      else:

        print line

    或者:

    for line in f:

      print line

    4.BOM

    unicode文件也能包含特殊的BOM(byte order marker,字节顺序标记)。BOM作为文件的第一个字符输入,程序通过它,以确定该文件应该按什么格式进行编码。例如:'xffxfe'表示编码为:utf-16-le。则余下的字符就将按utf-16-le进行编码。

    编码包装器:codecs:

    f = open("somefile","rb")

    #确定文档的编码encoding

    #假设BOM去掉了,只剩下有意义的字符

    #包装器

    fenc = codecs.EncodedFile(f,encoding)

    data = fenc.read()

    其中encoding方式有:

    ascii:[0x00,0x7f]有效,共7bit,128个

    lating-1或者iso-8859-1:[ox00,oxff],即unicode字符[U+0000,U+ooff]

    cp437:同iso-8859-1非常相似,在windows上的控制台应用程序运行时的默认编码。

    cp1252:同iso-8859-1非常相似

    utf-8:表示2个字节[U+0000,U+ ffff]的unicode,utf-8可以最少1个字节、最多3个字节来表示

    0nnnnnnn表示unicode字符[U+0000,U+oo7f];110nnnnn(字节0)、10nnnnnn(字节1)表示unicode字符[U+0080,U+o7ff];1110nnnn(字节0)、10nnnnnn(字节1)、10nnnnnn(字节2)表示unicode字符[U+0800,U+ffff];

    utf-16:变成16位编码

    utf-16-le:变成16位编码,小端

    utf-16-be:变成16位编码,大端

    unicode-escape:等价于u"string"

    raw-unicode-escape:等价于ur"string"

    5.对象持久性及pickle、shelve模块

    pickle模块将对象序列化为一个字节流,可以写入文件并在以后进行还原:dump()写入,load()还原。pickle是python专用的,不同编程语言交换数据时不要用!

    import pickle

    obj = SomeObj()

    fw = open(filename,'wb')

    pickle.dump(obj,fw)

    fw.close

    fr = open(filename,'rb')

    obj = pickle.load(fr)

    fr.close

    有点类似于json

    shelve类似于pickle,它将对象保存在一个类似于字典的数据库中:

    import shelve

    obj = SomeObj()

    db = shelve.open("filename")

    db['key'] = obj #保存

    obj = db['key'] #查询

    db.close()

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/3535161.html
Copyright © 2011-2022 走看看