Python(12)萌新也能看懂之——文件读写
来源:互联网 发布:ieee数据库 编辑:程序博客网 时间:2024/06/07 02:30
1、打开文件
file = open(‘./child.py’, ‘r’)
打开child.py文件。
第二个参数'r'
表示以文本模式读取。'rb'
表示以二进制格式读取,有些功能只能在二进制格式时使用。
除此之外,还有其他选项:
表格引自菜鸟教程
比较需要特别注意的是:
- 一般读取文本文件,用
'r'
就可以了; - 写入和读取,都有一个文件指针,这个决定文件从哪里开始读、写(下面细说);
'w'
系列,只适合对 新文件 进行处理。如果你对已有文件进行处理的话,很遗憾,原文件的内容会被清空;- 对已有文件进行追加的处理,应采用
'a'
系列,他会自动从原文件的末尾开始处理。如果该文件不存在,那么会创建一个新文件;
除此之外还有参数:
encoding='gbk'
读取GBK编码的文件;
2、读取文件
str = file.read()
读取全部
str = file.readline()
读取一行(注意:这个会带上最后那个换行符)
解决掉换行符的方法是:file.readline().strip()
,会扔掉字符串 前、后 的空白符(比如空格、或者换行符)。
str = file.readlines()
读取所有行,这个返回的是list。
关于readlines
这个API的解释:
可以加参数,表示单次读取的最大字节数。
每次读完一行都会判断一下,如果已读取的字节数大于这个数字的时候,就停止读取。
例如第一行是ab
外加一个字节换行符(相当于3个字节),
那么参数为 2
的时候,读取完第一行发现已读取3个字节,3 > 2
为True
,因此读取完第一行后会停止下来,直到下次调用的时候才会继续读取。
如果参数为 3
,那么读取完第一行发现 3 > 3
为False
,因此会继续读取第二行。
3、关闭文件
flie.close()
记得一定要关闭文件。
4、简化写法
with open('./child.py', 'r') as f: print(f.read())
这个会自动帮你调用f.close()
,但唯一问题是,他不会帮你处理异常。
所以可以用以下方法解决:
try: with open('./abc.py', 'r') as f: print(f.readline().strip())except Exception as e: print('文件打开失败,原因是:', e)
输出:
文件打开失败,原因是: [Errno 2] No such file or directory: './abc.py'
5、写文件
在文件指针处开始写入。
因为'w'
会覆盖原文件,因此默认是在文件开头,而'a'
会在原文件末尾进行追加,因此默认是从原文件末尾开始。
file.write(str)
注意,参数必须是字符串,数字是不行的,如果是数字,可以用str()
强制转换为字符串使用。
6、获取当前文件指针所在位置
f.tell()
返回值是数字(int)。
几个比较重要的概念:
- 文件的开头是0。(
'r'
模式打开,还没有调用read方法); - 读取和写入,都是从当前文件指针所在位置开始;
- 可以理解为list,第一个元素(字节)的位置为0,第二个为1,如果想从第二个字节开始读/写,那么应先把文件指针移动到
f.tell()
的返回值为1
的地方; 'a+'
模式固定在文件末尾追加,因此无论tell()
返回多少,或者移动文件指针,都不影响他从文件末尾开始写。
7、移动文件指针的位置
f.seek(移动字节数, 可选相对位置)
第一个指移动相对于参考位置的位置;(结合第二个参数理解)
第二个是可选的,默认为0(即文件开头)。只有当读取模式里有'b'
的时候,才可以为 1
或 2
。1表示从当前文件指针位置,2表示从文件末尾。
假如参数为(1,0)
或(1)
,那么表示将文件指针移动到第二个字节的位置;
如代码:
with open('./test.txt', 'r') as f: print(f.tell()) f.seek(1) print(f.tell()) f.seek(1) print(f.tell())# 0# 1# 1
假如open的时候,模式带b
,即表示以字节的形式读取,那么参数二可以为非0参数。
例如,参数为(1, 1)
,那么会相对于当前文件指针位置移动。如代码:
with open('./test.txt', 'rb') as f: # 第二个参数多'b' print(f.tell()) f.seek(1) print(f.tell()) f.seek(1, 1) # 这行不同 print(f.tell())# 0# 1# 2
当第二个参数为2的时候,表示从文件末尾开始计算(即最后一个字符的下一个位置,例如假如只有3个字符,那么最后一个字符的下一个位置就是3)
## test.txt123## test.pywith open('./test.txt', 'rb+') as f: f.seek(0, 2) print(f.tell()) f.write(b'4')# 3## test.txt1234
- Python(12)萌新也能看懂之——文件读写
- Python(11)萌新也能看懂之——用Python读取数据库,然后写入Excel里
- python之读写文件
- Python之文件读写
- Python之文件读写
- Python之读写文件
- python之文件读写
- Python——文件读写
- Python——读写文件
- Python学习之文件读写
- Python之gzip文件读写
- python之读写excel文件
- python之读写csv文件
- Python学习(六)——迭代、文件读写
- Python学习(十九)——CSV文件读写
- GDAL读写矢量文件——Python
- python——常见读写文件操作
- python学习——文件读写
- python字符串操作
- 一道阿里笔试题解析--程序调优
- linux 如何知道用户是否是管理员
- 算法-循环链表[约瑟夫问题之进阶]
- JAVA改变图片大小,将图片改为Jpg格式
- Python(12)萌新也能看懂之——文件读写
- java.sql.SQLRecoverableException: IO 错误: Undefined Error
- jQuery基础
- Spring mvc的注解是如何工作的
- 2. 财务管理
- Hibernate(十一)如何写分页
- JAVA 利用JDBC连接MYSQL数据库以及增删改查的实现【学习笔记】
- 分类书写jQuery
- vmware网卡VMnet中的桥接协议卸载后无法安装