python学习笔记(四)-文件操作

文件读写
"""
一、文件打开有3种方式
1、读 r #如果打开的文件的时候没有指定模式,那么默认是读
读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错
2、写 w #w模式会清空原有文件内容
写读模式 w+
只要沾上w,他就会把文件内容清空
3、追加 a
追加读写
二、文件指针
f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
当open时文件指针是在初始位置1,当读取4个字节内容是文件指针位置就在4,再write时,文件指针从4移到8,所以,只要控制了文件指针,就能重复的读取了!
操作文件指针可以通过seek方法:
seek(offset, whence):移动文件指针
offset:偏移量,可为负数
whence:偏移相对位置

偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
os.SEEK_SET:表示文件的相对起始位置
os.SEEK_CUR:表示文件的相对当前位置
os.SEEK_END:表示文件的相对结束位置
三、python2\3的区别
file() #python2里面打开文件还可以用file()
open() #python3
"""

f = open('ybq.txt','a+',encoding='utf-8')
f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
print(f.tell())#查看当前文件指针的位置
f.truncate()#清空文件内容
print(f.read())#读取文件里面的全部内容
print(f.readline())#只读取一行的内容
print(f.readlines())#读取文件里面所有的内容,把文件里面每一行的内容放到一个list里面
f.write('mpp'+'\n') #写入字符串
print(f.read())

names = ['ybq','mpp','tlx','ply','yjy']
f.writelines(names) 
st = 'ybq,mpp,tlx'
f.writelines(st) 
f.write(st) #只可写入不可迭代的对象,如字符串
tu=('sdf','sdfs','sdfsd')
f.writelines(tu) 
d={'name':'xx'}
f.writelines(d) #写的时候,传入一个可迭代的对象,如列表、元祖、字典
f.close()

#打开文件,通过循环向文件中写入数据
f = open('a.txt', 'w')
for i in range(3):
 f.write('xx'+'\n')
f.close()

#高效处理文件的方法
fw  = open('ybq.txt',encoding='utf-8')
count = 1
#直接循环文件对象的话,就是循环文件里面的每一行

for f in fw:
   f = f.strip()  #去掉空、换行符
   stu_lst = f.split(',')   #按‘,’分割成列表
   print(stu_lst)

文件指针
实验文件data.txt如下:
This file is data.txt
hello world!
My name is mark.

文件指针初始化

f = open('data.txt','r+')
print f.tell() #
f.write('nice to meet you')
f.flush()  #flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
print f.tell()
print f.read()
f.close()

相应输出:
//print f.tell()
0
//print f.tell()
16
//print f.read()
a.txt
hello world!
My name is mark.

说明:以’r+‘模式打开文件,文件指针所指位置为0
f.write(‘nice to meet you’)会覆盖原文件内容,文件指针随着移动
print f.read()只会输出剩余内容

f = open(r'test2.txt','a+')
print f.tell()
f.write('nice to meet you')
f.flush()
print f.tell()
print f.read()
f.close()

相应输出:
//print f.tell()
52
//print f.tell()
68
//print f.read()

说明:以’a+’模式打开,文件指针所指位置为文件尾,此例为52
f.write(‘nice to meet you’)会在原文件内容尾添加,文件指针随着移动至68
因为随着write()函数,文件指针已经移到文件末尾,所以print f.read()没有输出

相关推荐