Python文件的操作处理详解

 更新时间:2021年10月28日 11:55:43   作者:boy-s6  
今天这篇文章给大家介绍Python文件的操作处理,文章内容介绍的很详细,有需要的可以参考借鉴,希望能够给你带来帮助

1.使用open()函数打开文件夹

在读取一个文件的内容之前,需要先打开这个文件。在Python程序中可以通过内置函数open()来打开一个文件程序中,,并用相关的方法读或写文件文件中的内容以供程序的处理和使用,同时可以将文件看作Python中的一种数据类型。是用函数open()的语法格式如下。

open(filename, mode='r', buffering=None, encoding=None, errors=None,
     newline=None, closefd=True, opener=None)

open: 打开
      以什么样的方式打开, 读或写 read, write
          以读的方式:文本的方式, 二进制的方式
          以写的方式:文本的方式,二进制的方式
      写文件的时候:覆盖,追加(两种方式)

当使用上述函数open()打开一个文件后, 就会放回一个文件对象。上述格式中主要参数的具体说明如下所示:

  • filename:表示要打开的文件名。(路径+文件名)
  • mode:模式。
  • buffering:可选参数,缓冲区大小
  • encoding:文件编码类型。
  •                 文本文件才有可能需要编码,二进制文件不需要指定编码 否则会报出异常
  • errors:编码错误处理方式。
  • newline:控制通用换行符模式的行为。
  • closefd:控制在关闭文件时是否彻底关闭文件。

上述格式中,参数“mode”表示文件打开模式。在Python程序中,常用的文件打开模式如下表所示。

文件打开模式
模式 描述
r 以读的方式打开文件(默认)
rb 以二进制的格式打开一个文件只用于读。文件指针将会放在文件开头。
r+ 打开一个文件用于读写。文件指针将会放在文件开头。
rb+ 以二进制的格式打开一个文件用于读写。文件指针将会放在文件开头。
w 以写的方式打开,先清空文件再写(覆盖),如果该文件不存在,创建新文件
wb 以二进制的格式打开文件并写入,先清空文件再写(覆盖),如果该文件不存在,创建新文件。
w+ 以二进制的格式打开一个文件用于读写。先清空文件再写(覆盖),如果该文件不存在,创建新文件。
wb+ 以二进制的格式打开文件并读写,先清空文件再写(覆盖),如果该文件不存在,创建新文件。
a 以追加的方式去写
ab 以二进制的格式打开一个文件夹用于追加。如果该文件存在,文件指针将会放在文件的结尾。也就是说,新的内容将会写入到已有的内容之后。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。

下图很好的总结了这几种模式:

#默认以文本读的方式打开
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
 
file_obj = open("file.txt", "rt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
 
file_obj = open("file.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
 
 
file_obj = open("file2.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
 
file_obj = open("file2.txt", "a", encoding="utf-8")
data = file_obj.write("2222222222222")
print(data)
file_obj.close()
 
file_obj = open("file3.txt", "a+", encoding="utf-8")
file_obj.write("33333333333333333333333333")
file_obj.close()
 
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
file_obj.close()

1.1.2二进制的方式(打开):图片,音频,视频或者其他的非文本的文件。

#打开”IO.png“文件,并以二进制的方式读出,  b不能单独使用(b前的r不能省略)
file_obj = open("IO.png", "rb")
data = file_obj.read()
print(data)
#关闭文件
file_obj.close()
#以二进制的方式写入文件”psb_copy.jpg“
file_obj = open("psb_copy.jpg", "wb")
file_obj.write(data)
#关闭文件
file_obj.close()

注意:“IO.png”文件中,以存入了一张照片。

2.文件的操作

以文本方式写入的文件, 无需指定编码 以二进制方式写入文件,写入的内容要 求为bytes,所以通过str.encode('utf-8')来返回 bytes

1.2.1 文件写操作:

write()方法 f.write("hello world") #向目标文本文 件写入一行字符串                            

f.write("hello world".encode("utf-8")) # 向目标二进制文件写入一行字符串

1.2.2文件写操作:

writelines()方法写入 文件的字符串序列。

seq = ["hello world 1\n", "nihao wohao 2"] f.writelines( seq ) 7/15

1.2.3 文件读操作:

read()方法从文件读取指定的字节数,如果未给定或为负则读取所有。

ret = f.read() #默认全部读出 ret = f.read(5) #读出指定长度字符

1.2.4 文件读操作:

readline()方法可以读 出一行数据 ret = f.readline() #读取一行

注意:有个很像的 readlines()方法 ret = f.readlines() #返回的是一个列 表,且返回的是你读取的字符所在行的整个内容,但是当数据较大时,这样的用法会很占 用内存。

       

3.使用File操作文件        

3.1File对象的介绍

File对象中的属性信息如下表所示。

File对象中的属性信息

属性 描述
file.closed 如果文件已关闭返回True;否则返回False
file.mode 返回打开文件的访问模式
file.name 返回文件的名称

在Python程序中,对象File时通过内置函数实现对文件操作的,其中常用的内置函数如下。     

File对象中的内置函数

函数 功能
file.close() 关闭文件,关闭文件后不能再进行读写操作
file.flush() 刷新文件内部缓冲区,直接把内部缓冲区的数据写入文件,而不是被动的等待输出缓冲区写入。
file.fileno() 返回一个整形的文件描述,可以用在如os模块的read方法等一些底层操作上
file.isatty() 如果文件连接到一个终端设备返回True,否则返回False
file.next() 返回文件下一行
file.read([size]) 从文件读取指定的字节数,如果为给定或者为负值,则读取所有字节
file.readline([size]) 读取整行,包括“\n”
file.readlines([hint]) 读取所有行并返回列表,如给定hint>,返回总合大于约为hint字节的行,实际读取值可能比hine大,因为需要填充缓冲区
file.seek(offsrt[, whence]) 设置文件当前位置
file.tell 返回文件当前位置
file.truncate([size]) 截取文件,截取的字节通过size指定,默认为当前文件的位置
file.write(str) 将字符串写入文件,没有返回值
file.writeline(lines) 向文件写入一个序列字符串列表,如果需要换行,则要自己加入换行符。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • python设置环境变量的原因和方法

    python设置环境变量的原因和方法

    在本篇文章中我们给大家整理了关于python为什么要设置环境变量的相关知识点,有兴趣的朋友们参考下。
    2019-06-06
  • python实现微信自动回复及批量添加好友功能

    python实现微信自动回复及批量添加好友功能

    这篇文章主要介绍了python实现微信自动回复及python 批量生成微信添加好友截图功能的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)

    Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)

    这篇文章主要介绍了Python破解BiliBili滑块验证码的思路,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 解决keras使用cov1D函数的输入问题

    解决keras使用cov1D函数的输入问题

    这篇文章主要介绍了解决keras使用cov1D函数的输入问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python中修改字符串的四种方法

    Python中修改字符串的四种方法

    在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符。这篇文章主要介绍了Python中修改字符串的四种方法,需要的朋友可以参考下
    2018-11-11
  • 自己使用总结Python程序代码片段

    自己使用总结Python程序代码片段

    这篇文章主要介绍了自己使用总结Python程序代码片段,本文收集了如反向读取文件、往文件中所有添加指定的前缀、匿名函数作为返回值、将二进制数转为10进制数等实用代码片段,需要的朋友可以参考下
    2015-06-06
  • Python封装原理与实现方法详解

    Python封装原理与实现方法详解

    这篇文章主要介绍了Python封装原理与实现方法,结合实例形式较为详细的分析了Python封装的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • selenium判断元素是否存在的两种方法小结

    selenium判断元素是否存在的两种方法小结

    这篇文章主要介绍了selenium判断元素是否存在的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python opencv 检测移动物体并截图保存实例

    python opencv 检测移动物体并截图保存实例

    这篇文章主要介绍了python opencv 检测移动物体并截图保存实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • LyScript实现Hook隐藏调试器的方法详解

    LyScript实现Hook隐藏调试器的方法详解

    LyScript 插件集成的内置API函数可灵活的实现绕过各类反调试保护机制。本文将运用LyScript实现绕过大多数通用调试机制,实现隐藏调试器的目的,需要的可以参考一下
    2022-09-09

最新评论