withopen('../res/rw.txt','a+',encoding='utf-8') as f : for line inrange(20): f.write('这是第'+str(line)+'行\n')
withopen('../res/rw.txt','r',encoding='utf-8') as f : for line in f: print(line,end="") # "with open('../res/rw.txt','r',encoding='utf-8') as f: " 的好处 # 可以让你变得更懒,它等于 f = open('../res/rw.txt','r',encoding='utf-8') ... f.close() # 可以省略掉f.close(),如果代码块短一点不会忘记关闭流文件,但是如果代码块大一点可能就容易忘记f.close()
用文本模式和二进制模式打开的区别
用文本模式打开
1 2
withopen('../res/rw.txt','r',encoding='utf-8') as f : print(f.read())
用二进制的模式打开
1 2
withopen('../res/rw.txt','rb') as f : print(f.read())
常用读取的2种方法
一次性全读取
1 2
withopen('../res/rw.txt','r',encoding='utf-8') as f : print(f.read())
逐行读取
1 2 3 4
withopen('../res/rw.txt','r',encoding='utf-8') as f : for line in f: print(line,end="") print("-"*5+"逐行输出"+"-"*5)
常用写入的2种方法
以列表方法写入文件
1 2 3 4 5 6 7
lis = [] for i inrange(10): # 将字符串添加值lis列表末尾 lis.append('这是第'+str(i)+'行\n') withopen('../res/rw.txt', 'a+', encoding='utf-8') as f: # 将整个列表写入到rw.txt文件 f.writelines(lis)
文件打开模式
含义
r
只读模式,如果文件不存在,则返回FileNotFoundError
w
覆盖写模式,文件不存在则创建,存在则完全覆盖
x
创建写模式。文件不存在则创建,存在则返回异常FileExistsError
a
追加写模式,文件存在则创建,存在则在后追加内容
b
二进制文件模式
t
文本文件模式。默认值
+
与r/w/x/a 一同使用,在原功能基础上增加同时读写功能
以字符串写入文件
1 2 3 4 5 6 7 8
lis = [] for i inrange(10): lis.append('这是第'+str(i)+'行\n') withopen('../res/rw.txt', 'a+', encoding='utf-8') as f: # 遍历lis列表 for line inrange(len(lis)): # 将lis的每一个字符串写入rw.txt文件 f.write(lis[line])
容易忽略的错误
1 2 3 4
withopen('../res/rw.txt','a+',encoding='utf-8') as f : for line inrange(10): f.write('这是第'+str(line)+'行\n') print(f.readline())