python 文件处理

目录

  文件的打开模式

  文件的操作方法

  文件内光标移动

  案例

操作文件的模式

模式描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

操作文件的方法:

  f.read()        读取文件所有内容

  f.readline()        读取行,包括换行符"\n", 光标移动到下行

  f.readlines()       读取文件的所有行存放在列表中

  f.flush()         刷新文件内部缓存,直接把文件内部缓存写入文件中

  f.write()       将字符串写入文件

  f.seek()       移动文件中光标的位置

  f.close()        关闭文件

文件内光标移动:

#文件内指针的移动都是Bytes为单位的,唯一例外的是t模式下的read(n),n以字符为单位
with open('a.txt',mode='rt',encoding='utf-8') as f:
     data=f.read(3) # 读取3个字符
    
with open('a.txt',mode='rb') as f:
     data=f.read(3) # 读取3个Bytes

# 之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则则需要用f.seek方法主动控制文件内指针的移动,详细用法如下:
# f.seek(指针移动的字节数,模式控制): 
# 模式控制:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用

  

open()

  python open()用于对文件的处理,返回文件对象。

  注意: 一定要关闭文件。调用close()。

  语法:

f = open(file, mode='r', encoding=None)

  说明:

    f:文件对象

    file:文件

    mode:对文件操作的模式

    encoding:字符编码  

  例子:

# 1.打开文件,得到文件句柄并且赋值给一个变量
f = open('./test.py', 'r', encoding='utf-8')  # 默认打开的是r
# 2.通过文件句柄来操作文件
 data = f.read()
# 3.关闭文件
f.close()

参考原文:https://www.runoob.com/python3/python3-file-methods.html

 

posted @ 2020-03-30 09:37  zhuang6  阅读(62)  评论(0编辑  收藏  举报