Python的学习之旅———文件处理

python 是一个应用程序 应用程序是无法直接调用硬件的,要通过操作系统来调用硬件.

1. 打开文件,得到文件句柄并赋值给一个变量 f=open (,'r')
2. 通过句柄对文件进行操作  f.read 
3. 关闭文件   f.close


encode 编码(utf-8,GBK,)到字节B
decode b到编码(utf-8,GBK)
py打开一个文件实际上是打开了两个文件 (操作系统打开了一个,py还打开一个)
with关键字来帮我们管理上下文
with open('a.txt','w') as f:
    pass
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】

  对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)

rb    wb   ab

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码. 

"+" 表示可以同时读写某个文件   r+, 读写【可读,可写】 w+,写读【可读,可写】 a+, 写读【可读,可写】

x, 只写模式【不可读;不存在则创建,存在则报错】 x+ ,写读【可读,可写】   xb

f.read() #读取所有内容,光标移动到文件末尾

f.readline() #读取一行内容,光标移动到第二行首部

f.readlines() #读取每一行内容,存放于列表中 每一个列表中元素以 结尾.

f.write('aaa bbb ') #针对文本模式的写,需要自己写换行符

f.write('aaa bbb '.encode('utf-8')) #针对b模式的写,需要自己写换行符.还要转换成字节串

f.writelines(['ccc ','ccc ']) #文件模式 参数是序列

f.writelines([bytes('ccccc ',encoding='utf-8'),'dddd '.encode('utf-8')]) #b模式

一: read(3):

  1. 文件打开方式为文本模式时,代表读取3个字符

  2. 文件打开方式为b模式时,代表读取3个字节

二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

注意:

  1. seek有三种移动方式0,1,2,但无论哪种模式,都是以bytes为单位移动的

         0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

  2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

原文地址:https://www.cnblogs.com/surehunter/p/7551190.html