(二)文件的基本操作
根据打开文件模式对文件进行 读/写 操作
常见文件操作函数
read(), readline(), readlines(), write(), writelines()
seek()
(1)文件的读写
open() 函数返回一个文件(file)对象。
文件对象可迭代,是一个迭代器。
格式:for line in fp:
对line进行处理
1)读文件-read()方法
s = fp.read(size)
fp为读模式打开的文件对象,文本文件或二进制文件均可
size为从文件当前位置读取的字节数,若size为负数或空,则读取到文件结束
返回一个字符串(文本文件)或字节流(二进制文件)
>>> fp = open('firstpro.txt')
>>> s = fp.read(5)
>>> print(s)
Hello
>>> s = fp.read()
>>> s
', World!\nHello, Python!'
>>> fp.close()
2)读文件-readline()方法
s = fp.readline(size=-1)
size为从文件当前位置读取本行内的字节数,若size为默认值或大小超过当前位置到行尾字符长度,则读取到本行结束(包含换行符)
返回读取到的字符串内容

>>> fp = open('firstpro.txt')
>>> s = fp.readline(20)
>>> s
'Hello, World!\n'
>>> s = fp.readline(2)
>>> s
'He'
>>> s = fp.readline()
>>> s
'llo, Python!'
>>> fp.close()
3)读文件-readlines()方法
lines = fp.readlines(hint=-1)
hint为从文件当前读写位置开始读取需要的字节数,至少为一行;若hint为默认值或负数,则读取从当前位置到文件末尾的所有行(包含换行符)
返回从文件中读出的行组成的列表

>>> fp = open('companies.txt')
>>> lines = fp.readlines(2)
>>> lines
['NIKE Inc.\n']
>>> lines = fp.readlines()
>>> lines
['Microsoft Corporation\n', 'Apple Inc.\n', ' Visa Inc.']
>>> fp.close()
(2)写文件-write()方法
1)写文件-write()方法
fp.write(s)
向文件中写入数据(字符串或字节流),
返回写入的字符数或字节数。
例1:
>>> fp = open('firstpro.txt', 'w')
>>> fp.write("Hello, World!\n")
14
>>> fp.write("Hello, Python!")
14
>>> fp.close()
例2:
>>> f = open('firstpro.dat', 'wb')
>>> x = bytes([3, 4, 5])
>>> f.write(x)
>>> f.close()
2)写文件-writelines()方法
向文件中写入列表数据,多用于文本文件
>>> fp = open('companies1.txt', 'w')
>>> lines = ['NIKE Inc.\n', 'Microsoft Corporation\n', 'Apple Inc.\n', 'Visa Inc.\n']
>>> fp.writelines(lines)
>>> fp.close()
应用示例: 文件读写例子
将文件 py7-1.txt 的字符串前加上序号1、2、3、…后写到另一个文件scompanies.txt中。
#例py7-1.py 应用示例: 文件读写例子
#可先将py7-1.py 另存为文体文件格式 py7-1.txt,程序将文件py7-1.txt 的字符串前加上序号1、2、3、…后写到另一个文件scompanies.txt中。
print(' 文件读写例子 ')
f1= open('py7-1.txt') #文本文件py7-1.txt 为 ANSI格式
lines = f1.readlines()
f1.close()
for i in range(len(lines)):
print( lines[i] )
lines[i] = str(i+1) + ' ' + lines[i]
f2 = open('scompanies.txt', 'w')
f2.writelines(lines)
f2.close()
f2 = open('scompanies.txt', 'r')
lines = f2.readlines()
for i in range(len(lines)):
print(lines[i])
print(' OK! ')

