Python基础__with open()用法

1、open与with open区别

open()完成后必须调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的,由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。with open()则可以避免这样的情况。

2、代码

复制代码
#文件的读操作
with open('input_filename.txt','r') as f:#r为标识符,表示只读
   df=pd.read_csv(f)  
   print(f.read())
'''
其他标识符:
r:	以只读方式打开文件。
rb: 以二进制格式打开一个文件用于只读。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。
'''
#文件的写操作
with open('output_filename.csv', 'w') as f:
   f.write('hello world')  
'''
其他标识符:
w:	打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb:	以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+:	打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab:	以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+:	打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
''' 4

3、方法和属性

复制代码
f.read([size])   #将文件数据作为字符串返回,可选参数size控制读取的字节数
f.readlines([size])   #返回文件中行内容的列表,size参数可选
f.write(str)   #将字符串写入文件
f.writelines(strings)   #将字符串序列写入文件
f.close()   #关闭文件

f.closed	#返回布尔值,文件已经被关闭为True,否则为False
f.mode	#Access文件打开时使用的访问模式
f.encoding	#文件所使用的编码
f.name	#文件名
f.newlines	#未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表
f.softspace	#为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用

4、注意

  1. 要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数
  2. 读取时调用read()将一次性读取文件的全部内容,如果文件有10G,内存就爆了,保险起见可反复调用read(size)方法,每次最多读取size个字节的内容。
  3. 调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。
  4. 根据需要调用:如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便

文献参考python读取文件之with open()

相关推荐
学历真的很重要2 分钟前
LangChain V1.0 Short-term Memory 详细指南
后端·python·语言模型·面试·langchain·agent·ai编程
xxp43218 分钟前
Qt 网络编程 TCP通信
开发语言·qt
T***u33325 分钟前
PHP在电商中的会员管理
开发语言·wireshark·php·ue4·jina
张丶大帅32 分钟前
JS案例合集
开发语言·javascript·笔记
LitchiCheng1 小时前
Mujoco 基础:获取模型中所有 body 的 name, id 以及位姿
人工智能·python
老鱼说AI1 小时前
算法基础教学第一步:数据结构
数据结构·python·算法
2301_795167201 小时前
Python 高手编程系列八:缓存
开发语言·python·缓存
闲人编程2 小时前
Django测试框架深度使用:Factory Boy与Fixture对比
数据库·python·django·sqlite·钩子·fixture·codecapsule
8***29312 小时前
Go基础之环境搭建
开发语言·后端·golang
梅花142 小时前
基于Django房屋租赁系统
后端·python·django·bootstrap·django项目·django网站