2020-02-01
1、文件的读写
1)文件的打开
① 格式
1 |
|
② 例子
1 |
|
③ 打开模式
|模式字母| 模式作用 |
|–|–|
| r | 只读模式。缺省模式。如果文件不存在,报错 |
|w| 覆盖写模式。如果文件不存在则创建;如果文件存在则完全覆盖原文件|
|x|创建写模式。如果文件不存在则创建;如果文件存在则报错|
|a|追加写模式。如果文件不存在则创建;如果文件存在则在原文件后追加|
|b|二进制文件模式。不能单独使用,要配合上面几个。该模式不需要指定encoding。|
|t|文本文件模式。不能单独使用,要配合上面几个。|
④ 字符编码
|编码类型| 编码特点 |
|–|–|
| 万国码 utf-8 | 包含全世界所有国家要用到的字符,也是python3的默认文件编码
|统一编码 Unicode|python3中字符串默认的编码方式|
|中文编码 gbk| 缺省编码,专门解决中文编码的问题|
关于字符编码详细的内容可以参考这篇文章,这里对必要内容做点记录
python3中,对字符串的编码使用的是Unicode的编码方式,但是整个源文件存储的时候采用的是utf-8的形式
当我们要打开一个源文件程序时,系统将源文件的utf-8编码的内容,先用utf-8的方式解码成二进制,再用Unicode编码的方式编码,然后才能显示在屏幕上。
这里要注意,我们用Windows10的记事本写东西默认是utf-8的方式编码存储,但Windows7默认的是ANSI的方式
2)文件的读取
① 读取整个内容——f.read()
1 |
|
② 逐行读取——f.readline()
1 |
|
③ 逐行读取,每行形成一个列表——f.readlines()
1 |
|
3)文件的写入
① 向文件中写入字符串或字节流——f.write()
要注意打开文件时的打开模式,是w还是a
1 |
|
② 将元素为字符串的列表写入——f.writelines()
1 |
|
4)既读既写——最常用的方式
① f.seek(a,b)函数
这个函数的作用的是将指针移到指定的地方。可以理解为平时打字时候的光标。
函数的两个参数分别是:
a:偏移字节数
b:位置。可以是0,开始位置;1,当前位置;2,结尾位置
比如:f.seek(2,0)的意思就是将指针移到开始位置后2个字节的地方。
② r+模式
如果文件不存在,则报错
指针一开始指向开始的地方
要把指针移到最后才能开始写,否则会覆盖前面的内容
1 |
|
③ w+模式
如果文件不存在,则创建
如果文件存在,则会立刻清空原内容
④ a+模式
如果文件不存在,则创建
指针在末尾,添加新内容不会清空原内容
最常用这个
2、模块
1)模块、包、库的区别
模块:就是.py文件,里面定义了一些函数和变量。当我们在另一个.py文件中想使用前一个文件中的函数或变量时,我们就是从模块中调用。当然我们也可以自己写模块。
包:是模块的上级概念。简单来说,就是“包”包含了许多模块和子包。包目录下的第一个文件便是init.py,然后是一些模块文件和子目录。例如子目录中也有init.py这个文件,那么它就是这个包的子包了。当然,当我们自己写好模块之后,也可以自己创建自己的包。实际上,想numpy等都是以包的形式发布的。
库:是具有相关功能模块的集合。他和包有重合部分,但不是包的上级概念。实际上并不做特别的区分。
2)自己写一个模块
前面说到,一个模块其实就是我们平时写的东西。
不同的是,为了模块更好的在其他文件中调用,需要在代码加上下面这行,并把不想调用时就运行的代码放入下面这句的代码块中:
if __name__=='__main__':
具体的解释可以参考这篇文章,解释的很清楚。
3)模块的导入
① 导入整个模块——import 模块名
1 |
|
② 从模块中导入类或函数——from 模块 import 类名或函数名
1 |
|
③ 导入模块中所有的类和函数——from 模块 import *
1 |
|
4)模块的查找路径
模块的查找顺序是:内存 → 内置模块 → sys.path中