python3写入txt_python3笔记十七:python文件读写

一:学习内容

读文件

写文件

编码与解码

二:读文件--步骤分解

1.过程

第一步:打开文件

第二步:读文件内容

第三步:关闭文件

2.第一步:打开文件

open(path,flag[,encoding][,errors])

参数说明:

path:要打开文件的路径

flag:打开方式(

r:以只读的方式打开文件,文件的描述符放在文件开头

rb:以二进制格式只读的方式打开文件,文件的描述符放在文件开头

r+:打开一个文件用于读写,文件描述符放在文件的开头

w:打开一个文件只用于写入,文件的描述符放在文件的开头,如果该文件已经存在会覆盖,如果不存在则创建新文件

wb:打开一个文件只用于写入二进制,如果该文件会覆盖,如果该文件不存在新创建文件

w+:打开一个文件用于读写,如果该文件存在会覆盖,如果该文件不存在新创建文件

a:打开一个文件用于追加,如果文件存在文件描述符将会被放到文件末尾

a+:打开一个文件用于追加

encoding:编码方式

errors:错误处理

path = r"F:\python_test\read_practice.txt"

#f = open(path,"r",encoding="utf-8",errors="ignore") #ignore 忽略错误

f = open(path,"r",encoding="utf-8")

3.第二步:读文件内容

#法1、读取文件全部内容,适合读文件比较小的

str1 = f.read()

print(str1)

#法2、读取指定字符数

str2 = f.read(10) #读取文件10个字符,1个中文是1个字符

print(str2)

str3 = f.read(10) #继续上一次读取结束的位置继续读取

print(str3)

#法3、读取整行包括"\n"字符

str4 = f.readline()

print(str4)

str5 = f.readline() #继续下一行读取

print(str5)

#法4、读取指定字符数

str6 = f.readline(10)

print(str6)

#法5、读取所有行包括"\n"字符并返回列表

list7 = f.readlines()

print(list7)

#法6、若给定的数字大于0,返回实际size字符的行数

list7 = f.readlines(25)

print(list7)

#修改文件描述符位置

f.seek(0)

str9 = f.read()

print(str9)

4.第三步:关闭文件

f.close()

三:读文件--完整过程

1.法一

try:

f1 = open(path,"r",encoding="utf-8")

print(f1.read())

finally:

if f1: #打开失败时f1对象还未创建就不用关闭了

f1.close()

2.法二,最简洁的写法,不用自己手动去close了

with open(path,"r",encoding="utf-8") as f2:

print(f2.read())

675608-20190911114006120-1218622792.png

四:写文件--步骤分解

1.过程

第一步:打开文件

第二步:写文件内容

第三步:关闭文件

2.刷新缓冲区两种方式

自动刷新 f.close()

手动刷新 f.flush()

3.第一步:打开文件

path = r"F:\python_test\write_practice.txt"

f = open(path,"w",encoding="utf-8")

4.第二步:写文件

#将信息写入缓冲区

f.write("tester is a good girl")

#刷新缓冲区,就能写入文件

#直接把缓冲区的数据立刻写入文件,如果没有写刷新缓冲区则会在关闭文件时在把缓冲区写入文件

f.flush()

5.第三步:关闭文件

f.close()

五:写文件--完整过程

1.法一

try:

f1 = open(path,"w",encoding="utf-8")

f1.write("good girl")

finally:

if f1: #打开失败时f1对象还未创建就不用关闭了

f1.close()

2.法二-覆盖写入,简洁的写法,不用自己手动去close了

with open(path,"w",encoding="utf-8") as f2:

f2.write("good girl")

3.法三-追加写入,简洁的写法,不用自己手动去close了

with open(path,"a",encoding="utf-8") as f3:

f3.write("young girl")

执行完法二和法三的结果:文件被写入内容

675608-20190911115135086-1084236740.png

六:编码与解码

1.说明

不是二进制时:

文件打开的编码要一致,即写文件和读文件open中的encoding要一致

二进制文件时:

文件写入读取的编码要一致

2.不是二进制文件读写操作

path = r"F:\python_test\encode_file.txt"

with open(path,"w",encoding="utf-8") as f1:

str = "tester is a good girl测试"

f1.write(str)

with open(path,"r",encoding="utf-8") as f2:

data = f2.read()

print(data)

print(type(data))

675608-20190911140400572-1581153093.png

3.二进制文件读写

path = r"F:\python_test\encode_file.txt"

#with open(path,"wb",encoding="utf-8") ,当方式里有b时,不能有encoding参数,否则会报错binary mode doesn't take an encoding argument

with open(path,"wb") as f1:

str = "tester is a good girl测试"

f1.write(str.encode("utf-8"))

with open(path,"rb") as f2:

data = f2.read()

print(data)

print(type(data))

newData = data.decode("utf-8")

print(newData)

print(type(newData))

675608-20190911140510233-2104694222.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值