(1)文件功能
(1)f.read() 按照字符查找
f.read()中可以加入数字表示查找的范围
f=open("d:w.txt", mode="r+", encoding="gbk") print(f.read(3)) f.close() #输出:前3个字符
(2)f.seek() 按照字节定位光标位置 utf-8:1个字节表示一个字母,3个字节表示一个中文
gbk:一个字节表示一个字母,2个字节表示一个中文
unicode:4个字节表示一个字母,4个字节表示一个中午
#w.txt文件中:宝宝然 f=open("d:w.txt", mode="r+", encoding="gbk") f.seek(3) print(f.read())
f.close() #输出:宝然
(3)f.tell() 告诉我光标现在的位置
#w.txt:宝宝然 f=open("d:w.txt", mode="a+", encoding="gbk") f.write("是帅哥") #这时光标在最后位置,我想读取整个内容 count=f.tell(count-18) print(f.read(f.seek(f.tell(count-18))))
f.close
(2)一般来说我们对文件操作常用 (重要)
with open("d:w.txt",mode=" ",encoding=' ') as f: 操作文件
with : (1) 可以同时打开多个文件
(2)会自动关闭文件,不需要f.close()
with open("d:w.txt",mode=" ",encoding=' ') as f, open("d:w.txt",mode=" ",encoding=' ') as w: 操作文件
(3)对于文件中的内容拿出来,用for循环。
with open("d:w.txt",mode=" ",encoding=' ') as f: for line in f: print(f.read())
我们还可以将拿出来的内容放到一个空列表中。
课后习题
#用户登陆创建用户名密码,写入文件,登陆时通过拿出文件内容比较来登陆。
#涉及:(1)文件操作写入,读取
(2)循环登陆
username=input("请输入你所注册的用户名") userpassword=input("请输入你所注册的密码") with open("d:用户名及密码.txt", mode="w+", encoding="gbk") as f: f.write("{} {}".format(username,userpassword)) print("注册成功") i=0 list=[] while i<3: name=input("请输入用户名") password=input("请输入用户密码") with open("d:用户名及密码.txt", mode="r+", encoding="gbk") as f : for line in f : list.append(line) if name==list[0].strip() and password==list[1].strip() : print("登录成功") break else: print("输入错误,请重新输入") i+=1 #3个注意点: #(1)将文件中内容找出来用for循环,将每一行找出来,以字符串形形式,然后比较去掉空格等。 #(2)我们比较是将内容放到列表里,然后比较的,这个是个难点。 #(3)因为将内容放到列表是字符串形式,所以不需要再输入前面加int(),因为密码本身是字符串 # 你输入的数字也是字符串,如果加int()f反而会报错。
# (4)f.write()只能写入一个内容,所以这里用都格式化字符串