文件处理:
一、模式参数
t :文本模式 (默认)。
b :二进制模式。
+ :打开一个文件进行更新(可读可写)。
r :以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
r+ :打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ :以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w :打开一个文件只用于写入。
如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb :以二进制格式打开一个文件只用于写入。
如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,
即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。
也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
二、文件处理对象常用函数
open():打开文件(文件路径可以是相对路径,也可以是绝对路径)。
read():从文件的当前位置读取指定字符数,若未给定或者为负数,则读取所有内容。
readline():从文件读取整行,包括换行符 (从当前位置到行尾)。
readlines():读取所有行并返回列表。
tell():返回文件指针的当前位置。
seek():移动文件读取指针到指定位置。
write():向文件中写入指定字符串。
flush():刷新缓冲区,将缓冲区中的数据立刻写入文件,同时清空缓冲区。
close():关闭一个已打开的文件。文件关闭后不能再进行读写操作。
# --------------------------------
# 读取文件
# --------------------------------
# open() 打开文件,并返回一个文件对象
f = open('ch13_test.txt', 'r+')
# f = open(r'D:pathch13_test.txt')
print("文件名为:", f.name)
# read() 从文件读取指定的字符数,若未给定或为负,则读取所有
# 从文件头开始读取5个字符
print(f.read(5))
# 继续读取8个字符
print(f.read(8))
# readline() 从文件中读取整行
print(f.readline()) # 从当前位置到行尾(包括换行符)
print(f.readline(25)) # 读取指定数量的字符(如果当前行剩余字符数不够,遇换行符结束)
print(f.readline())
# 负数,读取整个文件的内容(从当前光标位置到文件末尾)
print(f.read(-1))
# 获取当前文件位置
post = f.tell()
print("当前文件位置为:", post)
# seek(offset[, whence]) 移动文件读取指针到指定位置
# 重新设置文件读取指针到开头
f.seek(0, 0) # whence 0:文件头;1:当前位置;2:文件尾
post = f.tell()
print("当前文件位置为:", post)
# readlines() 读取所有行并返回列表
i = 1
for line in f.readlines():
print("{}.{}".format(i, line), end="")
i += 1
# close() 关闭一个已打开的文件
f.close()
# --------------------------------
# 写入文件
# --------------------------------
# 打开一个文件进行读写(文件存在,打开;不存在,新建)
f = open('ch13_test2.txt', 'w+')
print("文件名为:", f.name)
# 定位到文件的末尾
# f.seek(0, 2)
str1 = "If you want to get something! You have to give! You have to learn, to insist! "
# 写入一个字符串
f.write(str1)
# 向文件写入一个序列字符串列表
str_list = ["If you really think it’s hard for you. ", "Then you quit. ",
"Once you quit. ", "Never complain. "]
f.writelines(str_list)
# 重新定位到文件的开始位置
f.seek(0, 0)
# 读取全部内容
print(f.read())
# 刷新缓冲区
f.flush()
# 关闭文件
f.close()
# 再次打开文件进行追加
f = open('ch13_test2.txt', 'a+')
f.write("Bye!")
f.seek(0, 0)
print(f.read())
f.close()