一开始代码
#打开文件
f = open('a.txt','w')
#文件写入
f.write("hello,world")
#文件读取
print(f.read())
#关闭文件
f.close()
修改之后的代码
#打开文件
f = open('a.txt','w+')
#文件写入
f.write("hello,world")
f.close()
#文件读取
f = open('a.txt')
print(f.read())
#关闭文件
f.close()
为啥就好了呢
1、你是用open打开一个文件,此时调用的是w写入模式,下面使用read是没有权限的。
2、使用write写入一个字符,但是此时并没有真正的写入,而是还存在与内存中。此时执行read读取的为空字符。需要先执行a.close()关闭文件,再使用f = open(‘a.txt’),最后再用f.read()打开文件读入,才可以读到最新的写入内容
科普
r:只读模式(默认)
w:写模式
a:追加模式
+:读写模式
b:二进制模式,例如声音,视频,图像等
扩展(追加写入)
##追加写入
f = open('a.txt','a')#追加写入
f.write("hello,world1")
f.close()
##换行追加写入
f = open('a.txt', 'a') # 换行追加写入
f.write("hello,world8888\n")
f.close()
扩展读
f = open('a.txt')
print(f.read())#是字符串形式,一次性读出
f = open('a.txt')
print(f.readline())#读取行,如果读取多行需要写多次,第一次执行读取的第一行
print(f.readline())#读取第2行
f = open('a.txt')
print(f.readlines())#读取所有行,注意重复调用会导致第二次读取空列表
#怎么让读取的内容不带换行符呢
f = open('a.txt')
b=f.readlines()
for i in b:
print(i)
读取文件的另外一种方式 with open,推荐使用
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:
try:
f=open('/Users/data/a.txt','r')
print(f.readlines())
except Exception as e:
print(e)
finally:
f.close()#报不报错都会执行
但是这样就会很繁琐,Python引入了with语句来自动帮我们调用close()方法
with open('/Users/data/a.txt','r') as f:
print(f.readlines())
with创建临时运行环境
作用:with用于创建一个临时的运行环境,运行环境中的代码执行完后自动安全退出环境。
对比:使用open进行文件操作时建议使用with创建运行环境,可以不用close()方法关闭文件,无论在文件使用中遇到什么问题都能安全的退出,即使发生错误,退出运行时环境时也能安全退出文件并给出报错信息