open(r'C:a/b/c.txt')
在windows下“\”是转义字符,所以添加 r 可以去除转义效果
如果不加 r 可以将所有右斜杠换成左斜杠
r是文件可读
t是文本模式
f=open('1.txt',mode='rt',encoding='utf-8')
res=f.read()
print(res)
关闭文件,回收空间
f.close()
del f
一般情况下
因为操作系统的打开文件数会影响性能
所以关闭文件是必要的
回收空间可以省略
with open('1.txt',mode='rt',encoding='utf-8') as f1:
res=f1.read()
print(res)
在with语句中,会自动关闭文件,不需要手动输入
也可以同时打开多个文件
with open('1.txt',mode='rt',encoding='utf-8') as f1,\
open('2.txt',mode='rt',encoding='utf-8') as f2:
res_1 = f1.read()
res_2 = f2.read()
print(res_1,res_2)
以字符串为单位,并且要有encoding
没有指定时,会使用默认解码
linux mac使用utf-8
windows 使用gbk
文件不存在时会报错,并且read方式会从开始读到结束,对于较大文件时会使内存爆炸。
单用户操作
建立1.txt文件存储用户名,密码
对文件进行操作
#coding:utf-8
input_user=input('username:').strip()
input_pass=input('password:').strip()
with open('1.txt',mode='rt',encoding='utf-8') as f :
res=f.read()
username,password = res.split(':')
# print(username,password)
if input_user == username and input_pass == password:
print("login successful")
else:
print("login error")
#coding:utf-8
input_user=input('username:').strip()
input_pass=input('password:').strip()
with open('1.txt',mode='rt',encoding='utf-8') as f :
for line in f:
username,password=line.strip().split(':') #strip去除换行符 并且‘:’分割
if input_user == username and input_pass == password:
print("login successful")
break
else:
print("login error")
文件不存在时会创建空文件;
存在时会清空文件,指针位于开始。是一个先清空文件再打开的过程,不用用W模式打开重要文件。
with open('3.txt',mode='wt',encoding='utf-8') as f:
f.write('ohoh')
适用于更新数据文件,或者是写新文件
不能读,只可把新内容加到末尾
在文件不存在时,创建空文档;
存在时,指针指到末尾
记录日志,账号和密码注册
输入用户名,密码存入db.txt文件中
#coding:utf-8
user=input("username: ")
pwd=input("password: ")
with open('db.txt',mode='at',encoding='utf-8') as f:
f.write('{}:{}\n11'.format(user,pwd))
对1.txt文件中字符进行替换
# coding:utf-8
import os
with open("1.txt", mode="rt", encoding="utf-8")as f,\
open('.1.txt.swap', mode='wt',encoding="utf-8")as f1:
for line in f:
f1.write(line.replace('fkr', 'lqw'))
os.remove('1.txt')
os.rename('.1.txt.swap', '1.txt')