f = open("name_list",encoding="utf-8") //打开文件,mode为只读,并且告诉解释器解读文件的类型为utf-8格式 for line in f: //循环文件 line = line.split() //将一个字符串,转换成列表,并且间隔为空格 height = int(line[3]) //找到列表当中下标为3的值,并且将它转化为整型 weight = int(line[4]) //找到列表当中下标为4的值,并且将它转化为整型 if height >= 170 and weight <= 50: //判断高度是否大于170,体重是否小于50 print(line) //如果符合则被输出
4.4.进制模式
4.4.1.rb 2进制只读模式
你都出来的数据就是bytes字节类型了,那么你写进去的也必须是bytes格式
f = open("3a6fa28a3ca13ba6938ee783dd6ff53.jpg", "rb") //打开一个图片,但是图片显然没有具体的编码格式,所以用 for line in f: print(line)
4.4.2.wb 2进制创建模式,若文件已存在,则覆盖旧文件
f = open("wb_file", "wb") //创建一个文件,以wb格式打开啊 b = "帅哥" f.write(b.encode("utf-8")) //b字符串以utf-8格式写入文件中,写入正常 f.write(b.encode("gbk")) //b字符串以gbk格式写入文件中,写入异常,因为文本是以utf-8格式读的,而你写入的gbk格式的字符串,所以出现乱码
4.4.3.ab 2进制追加模式,新数据会写到文件末尾
f = open("wb_file", "ab") //打开一个文件,mode为ab b = "iwbf" f.write(b.encode("utf-8")) //b字符串以utf-8格式追加写入文件中,写入正常
4.5.其它功能
4.5.1.seek 移动光标
f = open("wb_file", encoding="utf-8") //打开文件,用只读的模式,读取文件格式为utf-8 f.seek(6) //从起始点移动光标到第六个字节的地方,注意:gbk格式的中文占2个字节,utf-8的中文占3个字节,最后都有个换行符,也占一个字节,也不可撕裂字符例如:seek(9),要读到是必须3+3+1+1+3,而seek(9),seek(10),都会报错 print(f.readline()) //读一行数据,帅哥占了6个字节,所以读到的结果为:2