Python基础|文件与异常(一)
接上回说:概要
安装环境
变量
布尔、数字、字符串
列表
·文件
数据持久化最简单的类型是普通文件,有时也叫平面文件(flat file)。它仅仅是在一个文件名下的字节流,把数据从一个文件读入内存,然后从内存写入文件。Python很容易实现这些文件操作,它模仿熟悉和流行的 unix 系统的操作。
读写一个文件之前需要打开它:
1 data = open(filename, mode)
下面是对该 open() 调用的简单解释:
- data 是 open() 返回的文件对象;
- filename 是该文件的字符串名;
- mode 是指明文件类型和操作的字符串。
mode 的第一个字母表明对其的操作:
○ r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
○ r+ 可读可写,不会创建不存在的文件。如果直接写文件,则从顶部开始写,覆盖之前此位置的内容,如果先读后写,则会在文件最后追加内容。
○ w 表示写模式。若果文件不存在则新创建,如果该文件已存在则将其覆盖。
○ w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
○ x 表示在文件不存在的情况下新创建并写文件。
○ a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
○ a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
mode 的第二个字母是文件类型:
○ t(或者省略) 代表文本类型。
○ b 代表二进制文件。
打开文件之后就可以调用函数来读写数据,最后需要关闭文件。
使用 write() 写文本文件
http://www.yeslab.net/Uploads/201712/5a3900a2567eb.jpg
将整首诗写到libai.txt中:
http://www.yeslab.net/Uploads/201712/5a3900bfcd279.jpg
函数 write() 返回写入文件的字节数。和 print() 一样, 他没有增加空格或者换行符。同样,你也可以在一个文本文件中使用 print()
http://www.yeslab.net/Uploads/201712/5a3900f81c9c1.jpg
这就产生了一个问题:到底是用是 write() 还是 print()? print() 默认会在每个参数后面添加空格,在每行结束处添加换行。在之前的例子中, libai.txt 中默认添加了一个换行。为了使 print() 与 write() 有同样的输出,传入下面两个参数:
○ sep 分隔符:默认是一个空格 ' '
○ end 结束字符:默认是一个换行符 '\n'
除非自定义参数,否则 print() 会使用默认参数。在这里,我们通过空字符串替换 print() 添加的所有多余输出:http://www.yeslab.net/Uploads/201712/5a390145b76b1.jpg
如果字符串非常大,可以将数据分块,直到所有字符被写入:
http://www.yeslab.net/Uploads/201712/5a3901661b4c5.jpg
第一次写 10 个字符,4次写完,32个字符。
如果 libai.txt 文件已经存在,使用模式 x 可以避免重写文件:
http://www.yeslab.net/Uploads/201712/5a3901813dae0.jpg
这个部分内容比较多
下期我们继续
www.yeslab.nethttp://www.yeslab.net/Uploads/201709/59afc787d9521.jpg
感谢楼主分享!
页:
[1]