文件读写
w,r读写str类型数据
代码示例:
with open("data.json","w") as fp:
fp.write(str)
with open("data.json","r") as fp:
content = fp.read()
print(content)
字符串格式使用w写入,r可以原格式读出
write每次写入前会清空文件
如文件不存在会创建文件
write()
可以将任意字符串写入一个打开的文件。
不会再字符串结果添加换行符(“\n”):
如果不是字符串要转化一下。大多数类型都可以强制类型转换为str
str ——》bytes
b1 = bytes(a1,encoding = 'utf-8')
bytes ——》str
b2 = str(a2,encoding = 'utf-8')
可以再open语句中进行转码
代码示例:
with open(filename,"r",encoding='utf-8') as fp:# 将bytes类型的文件转化为str
content = fp.read()
print(content)
writelines()
此方法针对列表操作,它接受一个字符串列表作为参数,将他们写入到文件中,黄航服不会自动加入,需要显示的加入换行符。
将文件列表以for循环的形式写入并且手动加入换行符。
代码示例:
str01 = ["纳兰性德","纳兰容若","白居易","李清照"]
with open("data.json","w") as fp:
file = str01
for i in file:
fp.writelines(i + "\n")
with open("data.json","r") as fp:
for i in range(4):
print(fp.readline())
输出结果:
纳兰性德
纳兰容若
白居易
李清照
readline()
会逐行读取文件,再打开文件后,每执行一次该方法就会向下读取一行文件,如果已经读到文件最后一行,会读取处空行。
把读取到的文件存入字符串中
readlines()
每次按行读取整个文件的内容,将读取的结果放入一个List中。
无论是write() 还是writelines(),再open里面,无论是w,还是w+的方式写入都是追加写入的。
辨析 w, w+, r, r+, a, a+, rb, wb
w 新建只写,
w+新建读写
二者都会将文件内容清零
以w方式打开,不能读出,以w+方式打开可以读出。
文件不存在会创建文件
代码示例:
with open(filename,"w") as fp:
fp.write(file)
fp.read()
该代码会报错,因为w为只读属性
with open(filename,"w+") as fp:
fp.write(file)
fp.read()
本段代码不会报错,因为W+为读写属性,但是会读出空,因为写完后光标位于文件最末尾,向下读取内容为空。
要想读出问价需要将文件关闭再打开,光标就会跑到文件开头。
也可以使用seek() 方法,将光标指向文件开头:
with open("data.json","w+") as fp:
file = str01
for i in file:
fp.writelines(i + "\n")
fp.seek(0) # 将光标指向目标位置
print(fp.read())
r 只读
r+读写
r+可读可写,但若文件不存在会报错,其它特性和w+相同
特性可以参考w和w+
a附加 写方式打开
a+ 附加读写方式打开
不存在会创建文件
每次写入文件是不清空文件
代码示例:
str01 = ["纳兰性德","纳兰容若"]
with open("data.json","a+") as fp:
file = str01
for i in file:
fp.write(i + "\n")
with open("data.json","r") as fp:
print(fp.read())
运行两次结果:
纳兰性德
纳兰容若
纳兰性德
纳兰容若
- wb打开bytes类型文件
- rb写入bytes类型文件
网友评论