python笔记(三)---文件读写、修改文件内容、处理json、函数
文件读写(一)
1 #r 只读,打开文件不存在的话,会报错 2 #w 只写,会清空原来文件的内容 3 #a 追加写,不会请求,打开的文件不存在的话,也会帮你新建的一个文件 4 print(f.read()) #获取到文件里面所有的内容 5 print(f.readlines()) #获取到文件里面的所有的内容,存放到一个list里 6 f=open('users.txt') 7 print(f.readline()) #读取一行 8 print(f.readline()) 9 10 #写 11 a=['username1,123456\n','username2,123456\n'] 12 # for i in a: 13 # f.write(i+'\n') 14 print(f.writelines(a)) #用writelines不需要写循环,直接把list放到文件中 15 16 u='abc,123' 17 print(f.writelines(u)) #如果是字符串要放到文件中,最好不用要writelines,因为他要一个一个循环取;最到用write 18 19 #如果要把list多个元素写到文件里,就用writelines,如果是字符串要写到文件中就用write
文件读写(二)
#r+ 读写模式 打开不存在的文件会报错 #w+ 写读模式 #a+ 追加读写 # rb 二进制的读 # wb 二进制的写 #ab f=open('users.txt','w+',encoding='utf-8') print(f.read) #w+可以读到内容不报错,但是把文件内容清空了 #a+ f=open('users.txt','a+',encoding='utf-8') f.seek(0) print(f.read) f.write('a+模式') #如果是二进制文件,或是图片需要用rb,wb res= open('333.jpg','wb') print(res)
二、修改文件内容:
1 #1、简单、粗暴直接的 2 f=open(r'c:\users\nhy\Desktop\file.txt',encoding='utf-8') #如果打开文件是绝对路径,如果路径中有\n就会转义,前面加r就不会转义 3 res=f.read().replace('一点','二点') 4 f.close() 5 f=open(r'c:\users\nhy\Desktop\file.txt',mode='w',encoding='utf-8') 6 f.write(res) 7 f.flush() 8 f.close() 9 10 #第二种修改的方法 11 f=open('file.txt','a+',encoding='utf-8') 12 f.seek(0) 13 res=f.read().replace('你','NI') 14 f.truncate() #把原来的内容删掉 15 f.write(res) 16 f.close() 17 18 #第三种:如果是小文件用上面两种方法还可以,如果是大文件用下面的文件 19 import os 20 f=open('file.txt','a+',encoding='utf-8') 21 f2=open('file.txt.bak','w',encoding='utf-8') 22 for line in f: 23 new_line=line.replace('NI','你') 24 f2.write(new_line) 25 f.close() 26 f2.close() 27 os.remove('file.txt') #删除file.txt文件 28 os.rename('file.txt.bak','file.txt') #把file.txt.bak文件名称替换成file.txt 29 30 #第四种实现方式 31 #如果不想close关闭文件,可以直接用with操作 32 with open('file.txt',encoding='utf-8') as f,open('file.txt.bak',encoding='utf-8') as f2: 33 for line in f : 34 new_line=line.replace('两点','一点') 35 f2.write(new_line) 36 os.remove('file.txt') 37 os.rename('file.txt.bak','file.txt')
三、处理json:
1 #json通用的数据类型,所有的语言都认 2 #key--vules形式
3 #json串是字符串 4 5 s=''' 6 { 7 "error_code": 0, 8 "stu_info": [ 9 { 10 "id": 309, 11 "name": "小白", 12 "sex": "男", 13 "age": 28, 14 "addr": "河南省济源市北海大道32号", 15 "grade": "天蝎座", 16 "phone": "18512572946", 17 "gold": 100 18 }, 19 { 20 "id": 310, 21 "name": "小白", 22 "sex": "男", 23 "age": 28, 24 "addr": "河南省济源市北海大道32号", 25 "grade": "天蝎座", 26 "phone": "18516572946", 27 "gold": 100 28 } 29 ] 30 } 31 ''' 32 33 import json 34 res=json.loads(s) #json串(字符串),转成字典 35 print(res) 36 print(res.keys()) #打印 37 print(type(res)) #打印类型key 38 #dumps 把字典转成json,字符串 39 stus={'xiaojun':123456,'xiaohei':123456,'xiaowang':123456,'海龙':123456} 40 res2=json.dumps(stus,indent=4,ensure_ascii=False) #indent控制缩进 ensure_accii=False打印控制显示中文 41 print(res2) 42 print(type(res2)) 43 with open('stus.txt','w',encoding='utf-8') as f: 44 f.write(res2) 45 46 with open('stus.txt','w',encoding='utf-8') as f: 47 f.write(res2) 48 49 # json.loads 和json.load的区别 50 f=open('stus.json',encoding='utf-8') 51 content=f.read() 52 user_dic=json.loads(content) #json.loads读的是字符串,必须把文件先读出来 53 print(user_dic) 54 55 f=open('stus.json',encoding='utf-8') 56 user_dic=json.load(f) #json.load直接传一个文件对像就可以,自动读出来 57 print(user_dic) 58 59 #dump()和dumps()的区别 60 stus={'xiaojun':123456,'xiaohei':123456,'xiaowang':123456,'海龙':123456} 61 f=open('stus2.json','w',encoding='utf-8') 62 json.dump(stus,f,indent=4,ensure_ascii=False) #把stus写入f
63 f.close
64 #如果你要把字典写到文件里面的用dump比较方便
65 #如果要把字典存到数据库里面就只能用dumps
0 #r 只读,打开文件不存在的话,会报错
#w 只写,会清空原来文件的内容 11 #a 追加写,不会请求,打开的文件不存在的话,也会帮你新建的一个文件 12 f=open('users.txt','a+') 13 f.seek(0) #t移动文件指针 14 print(f.read()) #获取到文件里面所有的内容
15 print(f.readlines()) #获取到文件里面的所有的内容
16 print(f.readline()) #读取一行
17 print(f.readline())
18 #写