文件操作
注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。
1.打开文件
(相当于桌面的快捷方式)f=open(文件名,模式默认是制度模式"r")
data = f.red()
f.colse()--------------开一个必须关一个要不然消耗内存
print(data)
模式:r只读w会覆盖只写x只写a追加
- r ,只读模式【默认】
- w,只写模式【不可读;不存在则创建;存在则清空内容;】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【不可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型
打开方式-->字节
q= bytes(data,enconding=“utf-8")
1只读,rb(默认打开的就是字节)
f=open("ha.log","rb")
data=f.read()
f.close()
print(type(data))
2.只写wb
f=open("ha.log")
2.文件常用的可执行方法补充(文件内置函数)
f.flush() 刷新
f.read(3) 意识是读取3个字符,其他的函数都是以字节为单位seek,tell,read,truncate
f.open(file,mode buffering) file相当于文件的位置 、路径,mode文件的打开模式,buffering可取值0,1,》1三个
0代表buffer关闭
mode取值
Character | Meaning |
‘r‘ | open for reading (default) |
‘w‘ | open for writing, truncating the file first |
‘a‘ | open for writing, appending to the end of the file if it exists |
‘b‘ | binary mode |
‘t‘ | text mode (default) |
‘+‘ | open a disk file for updating (reading and writing) |
‘U‘ | universal newline mode (for backwards compatibility; should not be used in new code) |
1 r或rt 默认模式,文本模式读 2 rb 二进制文件 3 w或wt 文本模式写,打开前文件存储被清空 4 wb 二进制写,文件存储同样被清A 5 a 追加模式,只能写在文件末尾 6 a+ 可读写模式,写只能写在文件末 7 w+ 可读写,与a+的区别是要清空文件内容 8 r+ 可读写,与a+的区别是可以写到文件任何位置
encoding表示返回的数据采用编码方式,系统默认gbk python默认utf-8
newline 可以采取的值,有none \n\r
file()打开的是类和open()打开的是文件
-----------------------------------------------------------------------------------------------------------------------------------------------------------
1、打开文件读写
f=open(‘d:\a.txt‘,"r")
f.read(4)-------------#读取四个字节
f.read()--------------#读取到文件末尾
f.readline读一行
f.readline读所有行
line‘.strip() 删除换行符
f.write()
f.write()
f.writeline()
f.writelines()
f.seek(offset,wherer)
f.r
file的其他方法:
F.close()
#关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError
F.flush()
#把缓冲区的内容写入硬盘
F.fileno()
#返回一个长整型的”文件标签“
F.isatty()
#文件是否是一个终端设备文件(unix系统中的)
F.tell()
#返回文件操作标记的当前位置,以文件的开头为原点
F.next()
#返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。
F.seek(offset[,whence])
#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
F.truncate([size])
#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。