建设网站的免费模板,seo的网站,烟台百度网站建设推广,云南网页设计制作Python 文件读写笔记整理 参数说明
open(path, flag[, encoding][,errors])
path:要打开文件的路径
flag:打开方式
encoding:编码方式
errors:错误处理 Flag打开方式表 模式 描述 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格… Python 文件读写笔记整理 参数说明
open(path, flag[, encoding][,errors])
path:要打开文件的路径
flag:打开方式
encoding:编码方式
errors:错误处理 Flag打开方式表 模式 描述 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 r 打开一个文件用于读写。文件指针将会放在文件的开头。 rb 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 w 打开一个文件只用于写入。如果该文件已存在则打开文件并从开头开始编辑即原有内容会被删除。如果该文件不存在创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件并从开头开始编辑即原有内容会被删除。如果该文件不存在创建新文件。一般用于非文本文件如图片等。 w 打开一个文件用于读写。如果该文件已存在则打开文件并从开头开始编辑即原有内容会被删除。如果该文件不存在创建新文件。 wb 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件并从开头开始编辑即原有内容会被删除。如果该文件不存在创建新文件。一般用于非文本文件如图片等。 a 打开一个文件用于追加。如果该文件已存在文件指针将会放在文件的结尾。也就是说新的内容将会被写入到已有内容之后。如果该文件不存在创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在文件指针将会放在文件的结尾。也就是说新的内容将会被写入到已有内容之后。如果该文件不存在创建新文件进行写入。 a 打开一个文件用于读写。如果该文件已存在文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在创建新文件用于读写。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在文件指针将会放在文件的结尾。如果该文件不存在创建新文件用于读写。 打开文件
设置测试文件
创建一个test.txt文件并在其中输入一些内容。
如下 打开文件示例
使用r只读方式打开test.txt设置打开编码格式为utf-8。
示例如下
# 设置文件路径
path test.txtf open(path, r, encodingutf-8) 读取忽略错误
可通过设置errors’ignore’来忽略读取的错误。
示例如下
# errorsignore 忽略错误
f open(path, r, encodingutf-8, errorsignore) 读取文件
读取全部内容
使用文件的read()方法可用于读取文件中所有内容。
示例如下
f open(path, r, encodingutf-8)
print(f.read())# 执行结果
# 及至始皇奋六世之余烈振长策而御宇内吞二周而亡诸侯履至尊而制六合执敲扑而鞭笞天下威振四海。
# 南取百越之地以为桂林、象郡百越之君俯首系颈委命下吏。
# 乃使蒙恬北筑长城而守藩篱却匈奴七百余里。
# 胡人不敢南下而牧马士不敢弯弓而报怨。 忽略错误应用
当出现因为读取文件编码格式产生错误时可使用errorsignore来忽略报错继续读取。
示例如下
f open(path, r, encodinggbk)
print(f.read())
因为编码文件为utf-8格式但使用gbk时会抛出错误
Traceback (most recent call last):File E:\lianxipy\day3\文件读写.py, line 17, in moduleprint(f.read())
UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 2: illegal multibyte sequence 使用忽略错误
示例如下
f open(path, r, encodinggbk, errorsignore)
print(f.read())# 执行结果
# 銆銆鍙婅嚦濮嬬殗锛屽嬪叚涓栦箣浣欑儓锛屾尟闀跨瓥鑰屽尽瀹囧唴锛屽悶浜屽懆鑰屼骸璇镐警锛屽饱鑷冲皧鑰屽埗鍏鍚堬紝鎵ф暡鎵戣岄灜绗炲ぉ涓嬶紝濞佹尟鍥涙捣銆
# 鍗楀彇鐧捐秺涔嬪湴锛屼互涓烘傛灄銆佽薄閮★紱鐧捐秺涔嬪悰锛屼刊棣栫郴棰堬紝濮斿懡涓嬪悘銆
# 涔冧娇钂欐伂鍖楃瓚闀垮煄鑰屽畧钘╃憋紝鍗村寛濂翠竷鐧句綑閲屻
# 鑳′汉涓嶆暍鍗椾笅鑰岀墽椹锛屽涓嶆暍寮寮撹屾姤鎬ㄣ
因为编码格式的问题虽然也能读取出来但都是乱码。 读取整行
读取整行包括“\n”字符。
示例如下
print(f.readline())# 执行结果
# 及至始皇奋六世之余烈振长策而御宇内吞二周而亡诸侯履至尊而制六合执敲扑而鞭笞天下威振四海。 读取指定字符数
可使用文件的read(num)或readline(num)方法中传递num参数来获取指定字符数。
示例如下
print(f.read(6))
# 执行结果
# 及至始皇 # 测试文件开头处有两个空格print(f.readline(6))
# 执行结果
# 奋六世之余 读取所有行
读取所有行并返回列表。
示例如下
print(f.readlines())# 执行结果
# [\u3000\u3000及至始皇奋六世之余烈振长策而御宇内吞二周而亡诸侯履至尊而制六合执敲扑而鞭笞天下威振四海。\n,
# 南取百越之地以为桂林、象郡百越之君俯首系颈委命下吏。\n,
# 乃使蒙恬北筑长城而守藩篱却匈奴七百余里。\n,
# 胡人不敢南下而牧马士不敢弯弓而报怨。]
若给定的数字大于0返回实际size字节行数。
示例如下
print(f.readlines(60))
# 执行结果
# [\u3000\u3000及至始皇奋六世之余烈振长策而御宇内吞二周而亡诸侯履至尊而制六合执敲扑而鞭笞天下威振四海。\n, 南取百越之地以为桂林、象郡百越之君俯首系颈委命下吏。\n] 设置文件当前位置
使用file.seek(offset) 设置文件读取的当前位置。
示例如下
print(f.read(3))
print(f.read(3))# 设置读取当前位置回到开始位置
f.seek(0)
print(f.read(3))# 执行结果
# 及
# 至始皇
# 及 关闭文件
file.close() 关闭文件。关闭后文件不能再进行读写操作。
示例如下
print(f.read())
f.close()# 关闭文件后在读取文件
print(f.read())
执行结果 及至始皇奋六世之余烈振长策而御宇内吞二周而亡诸侯履至尊而制六合执敲扑而鞭笞天下威振四海。
南取百越之地以为桂林、象郡百越之君俯首系颈委命下吏。
乃使蒙恬北筑长城而守藩篱却匈奴七百余里。
胡人不敢南下而牧马士不敢弯弓而报怨。
Traceback (most recent call last):File E:\lianxipy\day3\文件读写.py, line 71, in moduleprint(f.read())
ValueError: I/O operation on closed file. 写入文件
字符串写入
file.write(str) 将字符串写入文件返回的是写入的字符长度。
示例如下
path test.txt
f open(path, a, encodingutf-8)
print(f.write(过秦论\n))# 文件内容会首先写入缓冲区 等需要关闭后 内容才会写入文件
f.close() 序列字符串写入
file.writelines(sequence) 向文件写入一个序列字符串列表。
如果需要换行则要自己加入每行的换行符。
示例如下
path test.txt
f open(path, a, encodingutf-8)
sequence [过\n, 秦\n, 论\n]
print(f.writelines(sequence))# 文件内容会首先写入缓冲区 等需要关闭后 内容才会写入文件
f.close() 文件写入缓冲区验证
使用休眠程序来演示不关闭程序时内容只是写入缓冲区而不是写入文件。
示例如下
path test.txt
f open(path, w, encodingutf-8)f.write(张三有两个哥哥)# 使用休眠程序 来演示不关闭程序时 内容不会写入文件
num 1
while num 10:time.sleep(1)num 1print(num)continue
f.close()
可通过查看test.txt发现在10秒后while循环退出后才写入到文件中内容之前一直存在缓冲区。 刷新缓冲区
内容写入文件的三种原因
1.文件关闭
2.缓冲区空间装满了自动刷新
3.刷新缓冲区
下面试一下主动刷新缓冲区。
示例如下
path test.txt
f open(path, w, encodingutf-8)
f.write(--- START --- \n)
num 1
while num 10:time.sleep(1)num 1# 刷新缓冲区f.flush()f.write(这是刷新缓冲区 %d \n % num)print(num)continue
f.write(--- END -- \n)
f.close()
效果
可查看到休眠程序并没有影响到文件的每秒写入内容。 文件读写完整过程
一个文件读写完整过程
设置路径、读写方式、编码方式及忽略错误。
还需要把对文件的操作进行防止异常处理文件打开后正常操作结束后需要关闭文件但有些错误还是会抛出无法向下执行关闭处理所以需要异常处理的finally无论是否报错都要执行关闭文件。
示例如下
path test.txt
# 打开文件
f open(path, r, encodingutf-8, errorsignore)
try:# 对文件进行读写操作print(f.read())print(f.write(过秦论))
finally:# 关闭文件f.close() 优化
优化为使用with open() as打开文件
这些try-finally已经封装到操作中。
如果出现异常后会直接关闭文件不会丢失之前写入的内容
且只使用一行就可以处理。
示例如下
path test.txt
with open(path, r, encodingutf-8, errorsignore) as f:print(f.read())print(f.write(过秦论)) 总结
主要是python 文件读写的方法、参数、整体过程及其示例的笔记整理。