Python学习你急5:文件打开与处理
Python文件处理
文件打开
f = open(filename[,mode[,bufsize]])
open()函数通过使用mode和缓存bufsize类型来打开filename标识的文件。此函数返
一文件对象,如果没有对象,则会创建一个新的对象
mode与系统函数fopen()使用的模式相同。如果mode参数省略,其默认取值为r
mode
模式 含义
r 打开用于读
w 打开用于写
a 打开用于附加(打开期间,文件位置自动移到文件末尾)
r+ 打开用于更新(读和写)
w+ 截断(或清空)文件,接着打开文件用于读写
a+ 打开文件用于读和写,并自动改变当前为止到文件尾,当附加任何模式选项时,以二进制模式而不是文本模式,打开文件(这种模式
b 仅对windows、dos和其他一些操作系统有效,对Unix、MacOS和BeOS则不管选项为何值,以二进制模式对待所有文件)
open()函数的bufsize选项参数决定从文件中读取数据时所使用的缓存的大小,如果bufsize省略,就使用系统默认的缓存容量
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f
<_io.TextIOWrapper name='/Users/David/Documents/string1.txt'mode='r' encoding='utf-8'>
注意:要读取文件中的中文字符时,必须将encoding改写为'utf-8'
文件处理
f.close() 关闭文件
f.read([size=-1])
从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f
<_io.TextIOWrapper name='/Users/David/Documents/string1.txt'mode='r' encoding='utf-8'>
>>> f.read()
'我爱你\n就像老鼠爱大米'
当再一次执行f.read()时,返回一个空的字符串,因为此时指针已经指向了文档末尾
>>> f.read()
''
当给定size的值的时候
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f.read(5)
'我爱你\n就'
f.readline([size=-1])
从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f.readline()
'我爱你\n'
f.write(str)
将字符串str写入文件,注意,要将字符串写入文件必须保证打开文件时用 'w' 或 'a' 打开
>>> f= open('/Users/David/Documents/我爱你.txt','w',encoding = 'utf-8')
>>> f
<_io.TextIOWrappername='/Users/David/Documents/我爱你.txt'mode='w' encoding='utf-8'>
>>> f.write('我爱Python')
8
>>> f.close()
f.writelines(seq)
向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset, from)
在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f.seek(13,0)
13
>>> f.read()
'像老鼠爱大米'
f.tell()
返回当前指针在文件中的位置
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> f.read(5)
'我爱你\n就'
>>> f.tell()
13 #函数本身是按照英文字节的位置计算的
f.truncate([size=file.tell()])
截取文件到size个字节,默认是截取到文件指针当前位置
使用for语句可以直接将文件打印出来
>>> f =open('/Users/David/Documents/string1.txt','r',encoding = 'utf-8')
>>> for each_line in f:
print(each_line)
我爱你
就像老鼠爱大米