python文件深入操作

一、读操作
1、read() 方法
调用read()会一次性读取文件全部内容,如果文件有10G内存就爆了,导致程序卡死,保险起见可以反复调用read(size)方法,每次最多读取size个字节的内容

file=open('b.txt',mode='r')
ret=file.read()#默认将内容全部读到程序中
print(ret)
ret1=file.read(3)#括号中可设置读取元素的个数
print(ret1)
file.close

2、readline() 每次读取一行,并且自带换行功能,每一行末尾会读到\n

file=open('b.txt',mode='r')
ret=file.readline()#默认读取一行
print(ret)#末尾有一个换行符\n会占一个位子
print(len(ret))#你会发现读取长度比真实长度多1个,那个就是\n的
ret1=file.readline(3)#指定读取字符的个数
print(ret)
file.close

3、redalines() 将内容全部读取,保存到一个列表中,每一行是一个元素

file=open('b.txt,mode='r')
ret=file.readlines()
print(ret)#你会看到打印结果如下  ['aaaaa\n','nnnnn']
file.close()

4、循环读取
file 文件句柄(文件对象)可以迭代的,可以循环读取文件中的内容,每次读一行。

file=open('b.txt',mode='r')
for line in file:
     print(line)
file.close

二、写操作
1、write()

file=open('b.txt',mode='w')
file.write('aaaaa')
file.close

2、writelines() 可以传递一个可迭代内容。

file=open('b.txt',mode='w')
lst=['aaa\n','bbb','ccc']
file.writelines(lst)
file.close()

三、其他操作
1、tell()
tell获取文件中当前光标所在的位置

file=open('file/a.txt',mode='r')
ret=file.read(3)
pos=file.tell()
print(pos)
print(ret)
file.close()

2、seek()
seek移动光标位置
参数:offset 移动的长度(字节);whence相对位置0从开头(默认),1从当前,2从末尾

file=open('b.txt',mode='r')
ret=file.read(3)
print(ret)
file.seek(0,0)#可以自己测试
file.seek(0,1)
file.seek(0,2)
print(file.read(3))
file.close()

3、name和mode
file.name 返回 路径
file.mode 返回 文件读写模式

file=open('file/a.txt','r')
print(file.name)
print(file.mode)
file.close()

4、with
with可以关闭文件,会自动关闭文件

with open ('b.txt',mode='r')
     ret=file.read(2)
     print(ret)#切记不可超出范围

5、乱码
python读写文件时,默认使用的编码为平台编码,也就是gbk;在pycharm中创建的文件默认使用的是utf-8编码;换句话说就是读写的编码不一致导致乱码。
encodeing=’'指定编码格式

with open ('file/c.txt',mode='w',encoding='utf-8')as f:
      f.write('你好世界')


with open ('file/c.txt',mode='r',encoding='utf-8') as f:
      ret=f.read()
      print(ret)

猜你喜欢

转载自blog.csdn.net/qq_44240254/article/details/86253916