#读取当前路径下的文件
f = open('模特主妇护士班主任.txt',mode = 'r',encoding='utf-8') content = f.read() print(content) f.close()
# 路径下的文件
f = open('g:\MyPython\模特主妇护士班主任.txt',mode = 'r',encoding='utf-8') content = f.read() print(content,type(content)) #我们是中国人民解放军 <class 'str'> f.close()
f = open('g:\MyPython\模特主妇护士班主任.txt',mode = 'rb') content = f.read() print(content) #b'\xe6\x88\x91\xe4\xbb\xac\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\xe6\xb0\x91\xe8\xa7\xa3\xe6\x94\xbe\xe5\x86\x9b' f.close()
# 文件写入 (只写)对于W ,没有此文件就创建,如果有就覆盖
f = open('log',mode = 'w',encoding='utf-8') f.write('我们是12骑兵') f.close()
f = open('log1',mode = 'wb') f.write('我们是12骑兵'.encode('utf-8')) f.close()
f = open('log1',mode = 'wb') f.write('我们是12骑兵'.encode('gbk')) f.close()
# 追加
f = open('log',mode = 'a',encoding='utf-8') f.write('在后面加') f.close()
f = open('log',mode = 'ab') f.write('新地'.encode('utf-8')) f.close()
# 读写文件 最常用的是 r+
f = open('log',mode = 'r+',encoding='utf-8') print(f.read()) #我们是中国人民解放军 f.write('中主的耻地是地') #我们是12骑兵在后面加新地中主的耻地是地 f.close()
f = open('log',mode = 'r+',encoding='utf-8') #不要先写后读 f.write('asddes') print(f.read()) f.close()
f = open('log',mode = 'r+b') #以bytes读写 print(f.read()) f.write('中主的耻地是地'.encode('utf-8')) f.close()
# 文件写入 (只写),没有此文件就创建,如果有就覆盖
f = open('log2',mode = 'w+',encoding='utf-8') f.write('我们是12骑兵') f.seek(0) #指向位置的光标 print(f.read()) #我们是12骑兵 f.close()
f = open('log',mode = 'a+',encoding='utf-8') f.write('在后面加') f.seek(0) #指向位置的光标 print(f.read()) f.close()
# 下面都以 r+ 为例,功能讲解 如果是中文,seek是按字节指定,不可以半个汉字
f = open('模特主妇护士班主任.txt',mode = 'r+',encoding='utf-8') #asdfkvngifftr content = f.read(3) #读取个数 read是按字符指定 print(content) #asd f.seek(3) #指针指向 3 print(f.tell()) #当前光标位置 3 print(f.read()) #fkvngifftr f.close()
f = open('log',mode = 'a+',encoding='utf-8') #asddes是12 f.write('在后面加') #asddes是12在后面加 count = f.tell() #当前光标位置 f.seek(count-6) #指向位置的光标 print(f.read(1)) #读一个字 面 f.close()
f = open('log',mode = 'a+',encoding='utf-8') #asddes是12 #早顺呃顷欠 f.seek(0) line = f.readline() #读一行 #asddes是12 print(line) f.seek(f.tell()) #文件光标指向前一个结束光标 line = f.readline() #读一行 #asddes是12 print(line) f.seek(0) line = f.readlines() #每一行当成列表中的一个元素 print(line) #['asddes是12\n', '早顺呃顷欠'] f.seek(0) for line in f: #循环打印文件中的内容 (如果文件大不可以这样读) print(line) #asddes是12 #早顺呃顷欠 f.close()
#with 不用关闭语句
with open('log',mode = 'r+',encoding='utf-8') as obj: #with 不用关闭语句 print(obj.read())
with open('log',mode = 'r+',encoding='utf-8') as f,\ open('log',mode = 'w+',encoding='utf-8') as f1: print(f.read())
#注册与登录
username = input('请输入你要注册的用户名:') password = input('请输入你要注册的密码:') with open('list_of_info',mode='w',encoding='utf-8') as f: f.write('{}\n{}'.format(username,password)) print('恭喜你注册成功') lis = [] i = 0 while i<3: usn = input('请输入你的用户名:') pwd = input('请输入你的密码:') with open('list_of_info',mode='r+',encoding='utf-8') as f1: for line in f1: lis.append(line) if usn == lis[0].strip() and pwd == lis[1].strip(): print('登录成功') break else: print('你的账号或密码错误') i += 1
#修改文件 文件是不能修改的,可以一行一行读文件,修改后存入新文件,最后改回来
小护士班主任 文件中的内容为:
小护士:李小妞
班主任:星儿
with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2: for line in f: if '星儿' in line: line = line.replace('星儿','阿娇') f2.write(line) import os os.remove('小护士班主任') #删除文件 os.rename('小护士班主任.bak','小护士班主任') #重命名文件
执行结果:
小护士班主任 文件中的内容为:
小护士:李小妞
班主任:星儿