python 中的r+和w+注意细节

这是一次学习过程中的问题记录。

r 就是直接打开已存在的文件,不存在会报错
w 就是打开文件,文件如果不存在,就会新建一个文件

r打开不存在的文件:

## *******************************文件读写模式:r *********************************
f = open(unicode(r"C:\测试\22222样.txt", "utf8"), "r")
str1 = f.read()
print str1
f.close()s()

结果:
python 中的r+和w+注意细节_第1张图片

w 打开不存在的文件,则会创建一个文件
python 中的r+和w+注意细节_第2张图片
结果:
image_1b4snko6j5oi1qhk9712m5157pm.png-18.2kB



关键两个: r+ 和 w+


r+ 是打开一个可读写的文件,文件必须存在,而且在读之后,需要加一句:f.seek(),不然会报错
python 中的r+和w+注意细节_第3张图片
结果:
python 中的r+和w+注意细节_第4张图片

正确的操作应该为:

## *******************************文件读写模式:r+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+')
str1 = f.read()
print str1
f.seek(00)
f.write("this is seek(0)")

# f.flush()
f.close()

原始文件内容为:
python 中的r+和w+注意细节_第5张图片

seek(0)操作结果:
image_1b4soe71714mf1gfp15r01hoa1civ34.png-19.4kB
python 中的r+和w+注意细节_第6张图片

当然,如果你是直接写入,没有read这个操作,那么就没有问题,不需加f.seek()

## *******************************文件读写模式:r+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+')

f.write("zhi jie xie ru")
f.close()

结果:
python 中的r+和w+注意细节_第7张图片


w+ 如果先写入,会将原内容抹去(这其实和w一样),再读的时候要注意加个f.seek()。如果先读取,会读取不到内容(因为用的是w+,会先抹去文件里面的内容),直接就写入了。
原文件:
python 中的r+和w+注意细节_第8张图片
直接先写入:

## *******************************文件读写模式:w+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'w+')
f.write("***")
f.seek(0)
print f.read()
f.close()

结果:
image_1b4sp28jn18js1m4685l1hqn1g6e6c.png-17.2kB
python 中的r+和w+注意细节_第9张图片

直接读取:
python 中的r+和w+注意细节_第10张图片

结果:
python 中的r+和w+注意细节_第11张图片

python 中的r+和w+注意细节_第12张图片

你可能感兴趣的:(python)