python使用open函数对文件进行处理详解

 更新时间:2022年05月09日 15:41:15   作者:静静超爱满满  
今天看了open函数,看到w+ r+ a+ 这种可读可写的操作,下面这篇文章主要给大家介绍了关于python使用open函数对文件进行处理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

在python中使用open函数对文件进行处理。

1.open()

python打开文件使用open()函数,返回一个指向文件的指针。该函数常用以下三个参数。

1.1 参数1

目标文件的路径+名字。最好使用r"路径"这种原始字符串写法,防止有转义字符影响实际路径。

1.2 参数2

操作文件的方式mode=‘方式’。mode=可以省略。下面对操作文件的方式进行详细说明:

(1)r

以只读方式打开文件。文件的指针将会放在文件的开头。这是open默认模式。如果文件不存在,会报错。

(2)rb

以二进制只读方式打开一个文件。文件指针将会放在文件的开头。注意这种方式不能使用encoding,不然会报错。

同样的内容使用一般方式和二进制的方式打开。

fp = open(r"E:\test.txt",'r',encoding='utf-8')
content = fp.readline()
print(content)

输出:加油,好好干!

fp = open(r"E:\test.txt",'rb')
content = fp.readline()
print(content)

输出:b’\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x8c\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xb9\xb2\xef\xbc\x81’

(3)r+

以读写方式打开一个文件。文件指针将会放在文件的开头。直接写入会覆盖文件开头的内容。

原始内容:

加油,好好干!别放弃

fp = open(r"E:\test.txt",'r+',encoding='utf-8')
fp.write("开心吧")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

执行后:

开心吧好好干!别放弃

(4)rb+

以二进制读写方式打开一个文件。文件指针将会放在文件的开头。

(5)w

以写入打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

(6)wb

以二进制写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。
(7)w+

以读写方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

原始内容:

开心吧好好干!别放弃

fp = open(r"E:\test.txt",'w+',encoding='utf-8')
fp.write("认真一点")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

执行后直接覆盖所有原始内容:

认真一点

(8)wb+

以二进制读写格式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

(9)a

以追加方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于写入。注意,不能读,读会出错。

(10)a+

以读写方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于读写。

原始内容:

认真一点

fp = open(r"E:\test.txt",'a+',encoding='utf-8')
fp.write("你就离成功近一点")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

执行后追加:

认真一点你就离成功近一点

这时候,指针放在文件尾部,直接读取会没有内容,需要将指针移动(seek)到文件的头部:

with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
    fp.seek(0,0)
    content = fp.readline()
    print(content)

(11)ab+

以二进制读写方式打开一个文件。如果文件已存在,文件指针将会放在文件结尾。即:新的内容将会被追加到已有的内容之后。如果该文件不存在,则创建新文件可用于读写。

1.3 参数3

编码的方式,常用utf-8,gbk等。如:encoding=‘utf-8’

如果是二进制的方式,这个参数不需要填,填了还会报错。

2.with open() as

这是open()的一种升级用法,控制块结束的时候文件会自动关闭,不需要显示地调用close()关闭文件。这种方法更方便使用,所以推荐大家使用这种方法。

with open(r"E:\test.txt",'r',encoding='utf-8') as fp:
    content = fp.readlines()

3.open函数常用的方法

3.1 读

文件内容:

认真一点你就离成功近一点
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff

(1)read()

一次性读取整个文件内容,将整个文件放到一个字符串中。使用read(size)方法,返回文件中的前size个字符:

content = fp.read()

输出:

认真一点你就离成功近一点
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff

(2)readline()

每次读取一行内容。

content = fp.readline()

输出:

认真一点你就离成功近一点

(3)readlines()

一次性读取整个文件内容到一个迭代器以供我们遍历(读取到一个list中,以供使用,比较方便)

content = fp.readlines()

输出;

[‘认真一点你就离成功近一点\n’, ‘啊啊啊啊啊啊啊啊啊啊啊\n’, ‘fffffffffff’]

3.2 写

(1)write()

fp.write()的参数必须是一个字符串,就是你要写入文件的内容.

(2)writelines()

fp.writelines()的参数可以是列表,也可以是字符串。

3.3 获取文件读写类型

如果文件可写,则 fp.writable() 方法返回 True,否则返回 False。

如果文件是可读的,则 fp.readable() 方法返回 True,否则返回 False。

比如:以w方式打开的文件,fp.readable()返回False,fp.writable()返回True。

3.4 指针移动

seek

f.seek(偏移量,[起始位置])

起始位置的三种取值:0文件开头,1当前位置,2文件末尾

例子见1.3中(10)a+

3.5 当前指针位置

tell()返回一个整数,表示当前文件指针的位置(就是到文件头的字节数).

如果是utf-8编码,那么一个中文字符占用三个字节,一个英文字符占用一个字节。如果是gbk编码,那么一个中文字符占用两个字节,一个英文字符占用一个字节。

with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
    content = fp.tell()
    print(content)

打印:30

3.6 truncate

truncate(size) 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

总结

到此这篇关于python使用open函数对文件进行处理的文章就介绍到这了,更多相关python open函数使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于opencv实现的人脸识别(适合初学者)

    Python基于opencv实现的人脸识别(适合初学者)

    OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库,下面这篇文章主要给大家介绍了关于Python基于opencv实现的人脸识别,文中通过实例代码介绍的非常详细,本文的教程非常适合初学者,需要的朋友可以参考下
    2022-03-03
  • Python利用ElementTree模块处理XML的方法详解

    Python利用ElementTree模块处理XML的方法详解

    ElementTree是python的XML处理模块,它提供了一个轻量级的对象模,下面这篇文章就来给大家介绍了关于Python利用ElementTree模块处理XML的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • 关于Python字典(Dictionary)操作详解

    关于Python字典(Dictionary)操作详解

    这篇文章主要介绍了关于Python字典(Dictionary)操作详解,Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型,需要的朋友可以参考下
    2023-04-04
  • python如何通过FastAPI构建复杂的Web API

    python如何通过FastAPI构建复杂的Web API

    FastAPI是一个现代的、快速(高性能)的Web框架,用于构建API,这篇文章主要介绍了python如何通过FastAPI构建复杂的Web API,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • 浅谈Python中re.match()和re.search()的使用及区别

    浅谈Python中re.match()和re.search()的使用及区别

    这篇文章主要介绍了浅谈Python中re.match()和re.search()的使用及区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python实现的二维码生成小软件

    Python实现的二维码生成小软件

    这篇文章主要介绍了Python实现的二维码生成小软件,使用wxPython、python-qrcode、pyqrcode、pyqrnative等技术和开源类库实现,需要的朋友可以参考下
    2014-07-07
  • Python使用K-means实现文本聚类功能

    Python使用K-means实现文本聚类功能

    最近遇到了这样一个需求,将N个文本内容聚类成若干个主题词团,减少人工分析文本和分类文本的工作量,实现思路是使用 K-means算法通过高频词对文本内容进行聚类,K-means算法实现原理简单易于理解,本文给大家介绍了Python使用K-means实现文本聚类功能,需要的朋友可以参考下
    2024-11-11
  • 深入探讨Python中弱引用机制与应用

    深入探讨Python中弱引用机制与应用

    在Python编程中,弱引用(Weak Reference)是一种特殊的引用方式,本文将深入探讨Python的弱引用机制,介绍其用法、原理及实际应用场景,希望对大家有所帮助
    2024-03-03
  • Django学习之静态文件与模板详解

    Django学习之静态文件与模板详解

    这篇文章主要为大家详细介绍了Django静态文件与模板,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • python将时分秒转换成秒的实例

    python将时分秒转换成秒的实例

    今天小编就为大家分享一篇python将时分秒转换成秒的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论