[关闭]
@nemos 2017-05-05T15:17:47.000000Z 字数 4398 阅读 765

其他标准库

py


collections

  1. Counter 计数器
  2. Deque 双端队列
  3. Defaultdict 默认值字典
  4. Array 数组
  5. Heapq 优先级队列
  6. Bisect 没懂,好像跟顺序有关
  7. Weakref 弱引用
  8. Copy 各种拷贝
  9. Pprint 结构化打印

参考

Python 中的高级数据结构


IO

CSV

读取

  1. import csv
  2. from collections import namedtuple
  3. with open('xxx.csv') as f:
  4. f_csv = csv.reader(d) #读取为元组序列
  5. f_csv = csv.DictReader(f) #读取为字典序列
  6. headers = next(f_csv) #数据头
  7. Row = namedtuple('Row', headers) #从list中初始化命名元组类
  8. for r in f_csv: #读出每一行
  9. r[0] #元组下标索引索引
  10. row = Row(*r) #将元组解包用于初始化对象
  11. row.data #用data索引元素
  12. r['data'] #字典序列索引

存储

  1. headers = ['header1','header2']
  2. rows = [('x', 'x'), ('x', 'x')]
  3. with open('xxx.csv') as f:
  4. f_csv = csv.writer(f)
  5. f_csv.writerow(headers)
  6. f_csv.writerows(rows)

JSON

  1. import json
  2. data={
  3. 'xxx': 'xxx',
  4. }
  5. json_str = json.dumps(data) #字符串读取
  6. data = json.loads(json_str)
  7. with open('data.json', 'w') as f:
  8. json.dump(data, f) #写入文件
  9. with open('data.json', 'r') as f:
  10. data = json.load(f)

open函数

文件模式

mode参数 含义
r 只读,默认
w 写入,覆盖原文件
a 若存在则追加
b 二进制模式,可叠加
+ 读写模式,可叠加
t 以文本模式打开
  1. fileobj = open(path[, mode[, buffering]]) #缓存-1参数使用默认大小
  2. None = f.write() #多次写入会追加
  3. None = f.close() #关闭文件流
  4. data = f.read([nbits]) #默认读取全部文件
  5. #读写都会移动光标
  6. None = f.seek(offset[, whence]) #移动光标到指定位置
  7. # offset表示偏移字节数负的从文件尾开始,whence表示起始位置默认为0
  8. data = f.readline([maxbit]) #读取行包括换行符,可指定最大字符数
  9. data = f.readlines() #将所有行作为列表返回
  10. None = f.writelines(iter) #写入多行

使用with

确保文件被正常关闭

  1. with open('filepath') as somefile:
  2. do_something(somefile)

fileinput

  1. $ python script.py file1.txt file2.txt
  1. fileinput.input([files[, inplace, backup]])
  2. #返回可遍历对象,每次遍历一行
  3. # inplace=True 原地处理,backup 备份路径
  4. fileinput.filename() #返回当前文件名称
  5. fileinput.lineno() #返回当前累计行数,多文件会持续
  6. fileinput.filelineno() #返回当前文件行数
  7. fileinput.isfirstline() #检查当前行是否为第一行
  8. fileinput.isstdin() #检查当前文件是否为stdin
  9. fileinput.nextfile() #关闭当前文件跳到下一个文件且跳过行数不计
  10. fileinput.close() #关闭整个文件链

urllib

urllib2增加了http验证和cookies

  1. from urllib import urlopen
  2. webpagefile = urlopen('http://www.python.org')

url操作

  1. urllib.qoute(string[, safe]) #将传入的字符转化为url友好字符
  2. urllib.quote_plus... #功能相同,用+代替空格
  3. urllib.unquote(string) #跟quote功能相反
  4. urllib.unquote_plus(string)
  5. urllib.urlencode(query[, doseq])#将映射转化为字符

sqlite

  1. import sqlite3 as sl
  2. conn = sl.connect('xxx.db') #连接数据库 不存在则创建
  3. cursor =conn.cursor() #返回游标对象
  4. cursor.execute('') #执行语句
  5. cursor.fetchall()
  6. cursor.rowcount #数据数目
  7. cursor.close()
  8. conn.commit()
  9. conn.close()

sys

  1. sys.argv #命令行参数
  2. # pyhthon file.py [arg]
  3. sys.exit([arg]) #退出当前程序且返回相应错误信息
  4. sys.modules #映射模块名称到载入模块的字典
  5. sys.path #import语句所查找的模块目录
  6. sys.platform #平台标识符
  7. sys.stdin,stdout,stderr #文件流

os

  1. os.getcwd() #获得当前目录
  2. os.listdir() #返回目录下所有文件的list
  3. os.mkdir()
  4. os.rename('old', 'new')
  5. os.rmdir()
  6. os.path.abspath(file.txt) #返回文件的绝对路径
  7. os.path.split(file.txt) #将文件的路径以文件夹,文件的格式分离
  8. os.path.dirname(file.txt) #返回文件所在的文件夹
  9. os.path.basename(file.txt) #返回文件的全名
  10. os.path.splitext(file.txt) #分离文件的拓展名
  11. os.path.exists()
  12. os.path.isfile()
  13. os.path.isdir()
  14. os.path.expanduser('~/local') #返回以用户路径连接的路径名
  15. os.join() #连接路径
  16. os.environ #环境变量的字典
  17. os.getenv('PYTHONPATH') #获得环境变量
  18. os.system(command) #在shell中执行指定的命令
  19. os.sep #路径分割符
  20. # unix '/' windows '\\' macos ':'
  21. os.pathsep #分割路径的分隔符
  22. # unix ':' windows ';' macos '::'
  23. os.linesep #字符串分割符即行分割符
  24. # unix '\n' windows '\r\n' macos '\r'
  25. os.startfile #接受路径打开文件

time

日期元组

(0,年) 如2016
(1,月) 1-12
(2,日) 1-31
(3,时) 0-23
(4,分) 0-59
(5,秒) 0-61
(6,周) 0-6
(7,儒历日) 1-366
(8,夏令时) 0,-1,1

  1. strtime = time.asctime([timetuple]) #参数可选下同
  2. timetuple = time.localtime([secs]) #
  3. secs = time.mktime(timetuple) #与上函数功能相反
  4. None = time.sleep(secs) #休眠
  5. timetuple = time.strtime(string[, format]) #解析字符串为时间元组
  6. secs = time.time()

random

注意事项

生成一个伪随机数

  1. #系统相关强加密
  2. os.urandom() #返回一个random对象
  1. obj = random.SystemRandom() #功能与os.urandom()类似
  2. num[0,1) = random.random()
  3. num = random.getrandbits(n) #以长整型的形式返回一个nbits的随机数
  4. num = randrange([start,] stop[, step]) #返回range()中的随机数
  5. ele = choice(seq) #返回序列中的随机元素
  6. None = shuffle(seq[, random]) #随机排列序列
  7. subseq = sample(seq, n) #从序列中返回n个随机且独立的元素

re

flag

  1. reboj = re.compile(pattern[, flags]) #根据正则表达式字符串创建模式对象
  2. MatchObject = re.search(pattern, string[, flags]) #任意位置,匹配一次
  3. MatchObject = re.match(pattern, string[, flags]) #匹配开头
  4. list = re.findall(pattern, string) #匹配全部
  5. list re.split(pattern, string[, maxsplit = 0]) #根据匹配模式来分割字符串
  6. str = re.sub(pat, repl, string[, count=0]) #将匹配到的字符用repl替换
  7. str = re.escape(string) #字符变为pat 不用转义

MatchObject(匹配对象)

  1. str = MatchObject.group([groupnum,...]) #获取指定组的匹配项
  2. num = MatchObject.start([groupnum]) #指定组的开始位置
  3. num = MatchObject.end([groupnum]) #同上
  4. tuplenum = MatchObject.span([groupnum]) #开始和结束的位置

模块

模块即为python文件
导入即被执行
包包含多个模块
本质为一个文件夹
根目录下边包含init.py文件
导入时 init文件会被执行

  1. #A包包含B模块
  2. import A #导入A包
  3. import A.B #从A包中导入B模块,但要以A.B来使用
  4. from A import B #功能与上语句相同,但可作为B来使用模块
  5. dir(pak)#可查看包内包含的内容
  6. mod.__all__ #定义模块公用接口
  7. from pak import * #__all__ 变量定义了import*可调用的方法
  8. mod.__doc__ #模块的文档
  9. mod.__file__ #模块所在的位置

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注