Python教程(十)和(十一)
Python基础教程(十)和(十一)
自带电池
-
Python的模块,称为标准库;导入模块并不意味着在导入时执行某些操作,主要用于定义,例如变量,函数和类等。
reload
重新载入模块,但是应该尽可能避免重新载入模块 -
包:为了组织好模块,可将其分组为包;包基本上就是另外一类模块,它们能包含其他模块
当模块存储在文件中时(拓展名为.py),包就是模块所在的目录;为了让Python将其作为包对待,必须包含一个
_init_py
的文件(模块),如果其作为普通模块导入的话,文件的内容就是包的内容;直接把模块放在包目录内即可 -
__all__
变量记录模块中有用的模块或函数,否则没有设定__all__
,用import *
语句默认会导入模块中所有不以下划线开头的全局名称 -
__doc__
是调用模块或函数的文档字符串(写在模块开头),使用help与直接查看文档字符串相比,在于会获得更多信息 -
标准库:
- sys:访问多个和Python解释器紧密的变量和函数
- os:访问到多个和操作系统联系紧密的变量和函数
- fileinput:轻松遍历多个文件和流中的所有行
- set, headq和deque:提供了3个有用的数据结构,集合也以内建的类型set存在
- time:获取当前时间,并可进行时间日期操作和格式化
- random:产生随机数,从序列中选取随机元素以及打乱列表元素
- shelve:创建持续性映射,将映射内容保存在给定文件名的数据库中
文件和流
-
打开文件:
open(name[, mode[, buffering]])
使用文件名作为唯一的强制参数,返回一个文件对象,mode和buffering参数 -
open函数的第三个参数(可选)控制着文件的缓冲,如果参数是0,I/O就是无缓冲;如果是1,I/O就是有缓冲(用内存代替硬盘,让程序更快)
-
文件(或流)最重要的能力是提供或者接受数据,如果有一个名为f的类文件对象,那么就可以使用f.write和f.read(以字符串形式)写入和读取数据
f=open('file.txt', 'w') f.write('Hello') f.read(4) #输出'Hell' f.read() #输出'o, World!' f.close()
-
读取行:
file.readline()
读取单独一行(从当前的位置开始直到一个换行符出现,也读取这个换行符);readlines()
读取一个文件中的所有行并将其作为列表返回 -
写入行:
writelines()
传给其一个字符串的列表(任何序列或者可迭代的对象都行),其将所有的字符串写入文件(或流),程序不会增加新行,需要自己添加;另外,没有writeline
方法,只能使用write()
-
使用with语句可以打开文件,并且将其赋值到变量上,之后将数据写入语句题中的文件,文件在语句结束后会被自动关闭
with open("somefile.txt") as somefile do_something(somefile)
-
对文件内容进行迭代:
-
按字节处理:
char=f.read(1) while char process(char) char=read(1)
-
按行操作:
while True line=f.readline() if not line: break process(line)
-
读取所有内容:
for char in f.read() #使用不带参数的read方法一次读取整个文件(整个文件当做一个字符串来读取) process(char) for line in f.readlines() process(line) #使用readlines方法(把文件读入一个字符串列表,在列表中每个字符串就是一行)
-
使用fileinput实现懒惰行迭代
for line in fileinput(filename) process(line)
-
-
注意:
- 使用
print
向文件内写入内容,会在提供的字符串后面增加新的行 - 使用序列对一个打开的文件进行解包操作,把每行都放入一个单独的变量中
- 在写文件后关闭了文件,确保数据被更新到了硬盘
- 使用
-
有很多迭代文件的内容,一般是迭代文本中的行