python的不同模式打开文件

这一生的挚爱 提交于 2020-02-26 21:51:13

参考:https://www.runoob.com/python3/python3-file-methods.html
https://blog.csdn.net/xrinosvip/article/details/82019844?utm_source=distribute.pc_relevant.none-task

打开文件的格式

常用open(filename,mode),返回一个file对象

参考:https://www.runoob.com/python3/python3-file-methods.html
若该位置没有这个文件,会自动新建文件的操作
#filename是需要打开文件的名字和路径字符串
#mode是打开文件方式的字符,默认是‘r’表示只读

a:在打开的文本结尾追加内容,指针在有该文件内容的结尾;若文件不存在,自动创建
b:以二进制模式打开文本
r:只读,文件指针默认在开头
+:打开文件可读写
w:打开文件,只用于写入,指针在开始位置,若有内容则被删除;若文件不存在,自动创建
X:新建文件,若已存在会报错

一种自动关闭文件的方法

这是一种打开文件和自动关闭文件的方法,文件不存在会报错,

with open('/path/to/file', 'r') as f:
    print(f.read())

下面一种则比较麻烦

try:
    f = open('/path/', 'r')
    print(f.read())
finally:
    if f:
        f.close()

写入字符

写入的字符在文件中的情况和文件的打开模式有关系。

 file = open(filename,mode)
 file.write('想要写入的字符串') #会返回写入的字符的个数
 file.readlines()#可以读取文件中的内容
 file.tell()#返回访问文件对象当前的位置,从文件开头算起的字节数
f.seek()函数

如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

seek(x,0) : 从(默认也是0)起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2):表示从文件的结尾往前移动x个字符

>>> f=open(r'C:\Users\MAR\Desktop\test.txt','r+')
>>> f.read()
'0123456789'   #文件的原始数据
>>> f.seek(5)
5
>>> f.write('*') #写入一个后指针位置向后移动一位
1
>>> f.read()
'6789'    #这时数据变为01234*6789,但这里从指针处向后的读取
>>> f.close()
>>> f1=open(r'C:\Users\MAR\Desktop\test.txt','r+')
>>> f1.read()
'01234*6789'  #f读取写入后
>>> f1.seek(2)
2
>>> f1.write('**')
2
>>> f1.close()
>>> f2=open(r'C:\Users\MAR\Desktop\test.txt','r+')
>>> f2.read()
'01**4*6789'	#f1读取改变后
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!