12_文件处理
2022/4/21 6:19:04
本文主要是介绍12_文件处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 文件处理 from os import path ''' 文件的处理包括读文件和写文件,读写文件就是请求操作系统打开一个文件,然后通过 操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象(写文件) ''' # 1.文件的读取 ''' 文件读取可分为以下步骤: 打开文件 读取文件内容 关闭文件 打开文件要使用open内建函数 open(file[,mode='r',encoding=None,errors=None]) 参数说明: file:文件路径,可以是相对路径和绝对路径 mode:文件打开模式 encoding:文件编码方式,不用于二进制文件,一般是utf-8,gbk errors:指定如何处理编码和解码错误,适用于文本文件 返回值:一个可迭代的文件对象 mode r ==> 只读 w ==> 只写,写之前会清空文件的内容,如果文件不存在,会创建新文件 a ==> 追加的方式,在原本内容中继续写,如果文件不存在,则会创建新文件 r+ ==> 可读可写 w+ ==> 打开一个文件用于读写。如果文件存在则将其覆盖。如果文件不存在,创建新文件 a+ ==> 打开一个文件用于读写。如果文件已经存在,文件指针将会放在文件的结尾。文件 打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 b ==> rb,wb,ab,rb+,wb+,ab+意思和上面一样,用于操作二进制文件 二进制文件一般用于视频,音频,图片。 读取文件常用函数 函数 read([size]) ==> 读取文件(读取size字符,默认则是读取全部) readline([size]) ==> 读取一行,如果指定size,将读入指定的字符数 readlines() ==> 把文件内容按行全部读入,返回一个包含所有行的列表 fp = open(path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8') fp.write(',里斯爱上王五') print(fp.readlines()) fp.close() 文件读写时有可能会产生IOError,一旦出错,最后的fp.close()就不会调用。 为了保证是否出错都能正确的关闭文件,可以使用try...finally来实现 try: fp = open(path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8') print(fp.readlines()) finally: fp.close() 可以简写为: with open(path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8') as fp: print(fp.readlines()) read()和readlines()会一次读入文件全部内容,如果文件太大,会直接耗尽内存, 因为文件对象可迭代,所有可以使用for-in遍历文件 with open(path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8') as fp: for line in fp: print(line.strip()) 注意⽆论是read、readline、readlines都会读⼊⾏末的\n,所以需要⼿动剔除\n ''' # 2.写文件 ''' path = path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8' 1.打开文件 f = open(path,'w',encoding='utf-8') 2.写入内容,将内容写入到缓冲区 不会自动换行,需要换行,需要在字符串末尾添加换行符 f.write('里斯和张三是好朋友\n') 3.刷新缓冲区 f.flush() ==> 加速数据流动,保证缓冲区的流畅 4.关闭文件 f.close() ''' # 3.移动文件指针 ''' 文件的顺序是向后读写的,如果想要移动文件指针,可以使用seek方法: file_obj.seek(offset,whence=0) 功能:移动文件指针 参数:offset是偏移量,正数表示从文件开头向文件末尾移动,负数相反 whence:文件指针位置,可选参数 SEEK_SET or 0表示文件开头位置。默认值 SEEK_CUR or 1表示当前位置 SEEK_END or 2文件末尾位置 with opem(path.dirname(path.abspath(__file__)) + '\\test','r+',encoding='utf-8') as fp: fp.seek(5) ==> 向后移动5个指针 print(fp.read(3)) fp.seek(0) ==> 回到开头 print(fp.read(5)) print(fp.tell()) ==> tell()显示当前指针的位置 ''' # CSV文件处理 ''' 读取CSV import csv with open(path.dirname(path.abspath(__file__)) + '\\test2','r+',encoding='utf-8') csv_reader = csv.reader(fp,delimiter=";") ==> delimiter指定分隔符 header = next(csv_reader) ==> 获取第一行 print(header) for line in csv_reader: print(line) 写入csv import csv list1 = ['1','2','3',['4','5']] with open(path.dirname(path.abspath(__file__)) + '\\test2','r+',newline='',encoding='utf-8') as f csv_writer = csv.writer(f,delimiter='\t') for line in list1: csv.writer.writerow(line) '''
这篇关于12_文件处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略