目录
  • 1.open()
    • 1.1 参数1
    • 1.2 参数2
    • 1.3 参数3
  • 2.with open() as
    • 3.open函数常用的方法
      • 3.1 读
      • 3.2 写
      • 3.3 获取文件读写类型
      • 3.4 指针移动
      • 3.5 当前指针位置
      • 3.6 truncate
    • 总结

      在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 后面的所有字符被删除。

      总结

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。