您的位置:首页 > 编程语言 > Python开发

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

2016-12-26 16:50 211 查看
这是一次学习过程中的问题记录。

r 就是直接打开已存在的文件,不存在会报错

w 就是打开文件,文件如果不存在,就会新建一个文件

r打开不存在的文件:

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


结果:



w 打开不存在的文件,则会创建一个文件



结果:



关键两个: r+ 和 w+

r+ 是打开一个可读写的文件,文件必须存在,而且在读之后,需要加一句:f.seek(),不然会报错



结果:



正确的操作应该为:

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

# f.flush()
f.close()


原始文件内容为:



seek(0)操作结果:





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

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

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


结果:



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

原文件:



直接先写入:

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


结果:





直接读取:



结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: