文件的定位-seek()方法
根据文件的编码方式,可以将文件分为文本文件和二进制文件。
文本文件由字符组成,因此也便于显示,可读性强。
二进制文件将数据以在内存中的存储形式存放到磁盘文件中。
(三)文本文件
Python文件读写操作的基本流程是:
打开文件获得文件对象;
将文件对象赋给一个变量;
通过这个变量对文件内的数据进行读写操作。
(1)文件定位方法 seek()
fp.seek(offset , whence=0)
fp打开的文件必须允许随机访问
在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)偏移offset个字节
whence参数可选,默认值为0
返回当前的读写位置
>>> fp = open('testseek.dat', 'wb+')
>>> fp.write(b'Hello,word!')
11
>>> fp.seek(0)
0
>>> s = fp.read(5)
>>> s
b'Hello'
>>> fp.seek(-5, 2)
6
>>> s = fp.read()
>>> s
b'word!'
>>> fp.seek(3, 0)
3
>>> fp.read(3)
b'lo,'
>>> fp.seek(2, 1)
8
>>> fp.read(3)
b'rd!'
>>> fp.close()
例:文件中头部插入一个新行
f= open('companies.txt', 'r+')
lines = f.readlines()
f.seek(0)
f.write('Information\n') # 覆盖模式
f.close()


例:文件中头部插入一个新行
f= open('companies.txt', 'r+')
lines = f.readlines()
for i in range(0, len(lines)):
lines[i] = str(i+1) + ' ' + lines[i]
lines.insert(0, 'Information\n')
f.seek(0)
f.writelines(lines)
f.close()
(2)文件的定位-tell()方法
fp.tell() 返回文件的当前读写位置
>>> fp = open('testseek.dat', 'rb+')
>>> fp.tell()
0
>>> fp.read(5)
b'Hello'
>>> fp.tell()
5
>>> fp.close()
(3)文件的其他操作
文件的其他方法及属性
| 方法 | 功能 |
f.flush() | 将写缓冲区的数据写入文件 |
f.truncate(size=None) | 将文件截取为给定大小的字节(如果未指定大小,则为当前文件读写位置)。当前文件读写位置没有改变 |
f.closed | 文件关闭属性,当文件关闭时为True,否则为False |
f.fileno() | 返回文件描述符(整数) |
f.readable() | 判断文件是否可读,是返回True,否返回False |
f.writable() | 判断文件是否可写,是返回True,否返回False |
f.seekable() | 判断文件是否支持随机访问,是返回True,否返回False |
f.isatty() | 判断文件是否交互(如连接到一个终端设备),是返回True,否返回False |
With语句——文件异常处理
with open('companies.txt', 'r+') as f:
lines = f.readlines()
for i in range(len(lines)):
lines[i] = str(i+1) + ' ' + lines[i]
f.seek(0)
f.writelines(lines)

