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向文件内写入内容,会在提供的字符串后面增加新的行 - 使用序列对一个打开的文件进行解包操作,把每行都放入一个单独的变量中
 - 在写文件后关闭了文件,确保数据被更新到了硬盘
 
 - 使用
 - 
    
有很多迭代文件的内容,一般是迭代文本中的行