博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Day4-文件,json字典文件互转,函数
阅读量:4348 次
发布时间:2019-06-07

本文共 3580 字,大约阅读时间需要 11 分钟。

文件的读写:

1 #对文件的操作分为三步:1.把冰箱门打开2.对冰箱里的东西操作3.把冰箱门关上 2  3 #1.打开文件两种方式: 4 myfile = open('myfirstfile.txt','a+',encoding='utf-8') 5 myfile.seek(0)#给出文件指针的位置 6 print(myfile.tell()) 7 print('firstline:',myfile.readline()) 8 print(myfile.tell()) 9 with open('mysecondfile.txt','a+',encoding='utf-8') as myfile2:10     myfile2.seek(0)11     print(myfile2.readlines())#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用12     myfile2.seek(0)13     print(myfile2.read())#读取文件中的所有内容14     myfile2.seek(0)15     for line in myfile2:16         print(line)#用于大文件读取line就是每行文件的内容,读完一行的话,就会释放一行的内存17 18 #修改文件:19 '''20 修改文件的话,有两种方式,21 一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;22 第二种是把修改后的文件内容写到一个新的文件中23 '''24 #第一种获取文件所有内容,更改文件,文件内容清空后,重写25 with open('文件更改方式一.txt','a+',encoding='utf-8') as myfile3:26     myfile3.seek(0)27     data = myfile3.read()28     Newdata = data.replace('123','a')29     myfile3.seek(0)30     myfile3.truncate()31     myfile3.write(Newdata)32 '''第二种方法:文件高效的处理方式 :33 1. 把文件的每一行拿出来处理34 2.写好一行就放到新的文件里3.删掉旧文件4.新文件改名字'''35 with open('words',encoding='utf-8') as fr ,open('newwords.txt','a+',encoding='utf-8') as fw:36     fr.seek(0)37     for line in fr:38         line = line.lstrip()39         if line:40             Newline = line.replace('寂寞','jimo')41             fw.write(Newline)

 

# #文件操作小练习# #要求1.以数字开头的就不要2.在每一行后面加上@163.com# import stringwith open('eamil.txt',encoding='utf-8') as fre,open('Newmail.txt','a+',encoding='utf-8') as fwe:    for line in fre:        if not line[0].isdigit():            Newline = line.strip() + '@163.com\n'            fwe.write(Newline)

 JSON 与文件

'''json 本质是字符串,但是长得像字典,内容还得是双引号括起来'''import jsonuser_info1 = '''{"sd":"12dsdfdrfs","af":"sdfsdfsd"}'''user_dic2 = json.loads(user_info1)#json 转字典print(user_dic2)>>>{
'sd': '12dsdfdrfs', 'af': 'sdfsdfsd'}user_info2 = json.dumps(user_dic2)#字典转Jsonprint(user_info2)'''json 与文件:'''import jsonf = open('stu.txt')res = json.load(f)#这个是直接从文件里拿,不需要再读一次文件了,json帮你读print(res)stu_info = { 'laowang':{ 'cars':['BMW','Ben-z'] } }fw1 = open('stu1.json','w',encoding='utf-8')json.dump(stu_info,fw1,indent=4)#不需要咱们自己再write了,人家会帮你写入文件

 Json 与文件的例子

1 '''用json实现用户注册''' 2 import json 3 f = open('users.txt', 'a+', encoding='utf-8') 4 f.seek(0) 5 user_info = json.load(f) 6 print(user_info) 7 for i in range(3): 8     uname = input('input your login:\n').strip() 9     pwd = input('input your pwd:\n').strip()10     cpwd = input('input your pwd again:\n').strip()11     if uname and pwd and cpwd:12         if uname in user_info:13             print('用户已存在,请换一个用户名')14             break15         elif pwd == cpwd:16             print('注册成功')17             user_info[uname] = pwd18             f.seek(0)19             f.truncate()20             json.dump(user_info,f)21             break22         else:23             '两次密码不一致'24     else:25         print('用户名密码不能为空~')26 else:27     print('三次机会用完')28 f.close()

 练习:

#1、监控日志    # { '192.168.1.1':0,'192.158.1.1':2  }    #[192,]#    1、如果一分钟之内某个ip访问超过100次#    2、就吧他的ip找出来,split,取第一个元素#   3、找出所有的ip,统计次数    #4、判断每个ip次数day100,就发邮件    #5、记录文件指针,给下次读的时候用    #6、等待60s,重新读取文件import timepoint = 0 #存放的是文件初始的位置while True:    with open('access.log',encoding='utf-8') as f:        f.seek(point)        ip_info  = {} #存放ip和他出现的次数        for line in f:            ip = line.split()[0]            if ip in ip_info:                ip_info[ip] += 1            else:                ip_info[ip] = 1        point = f.tell() #获取当前文件指针的位置        for k in ip_info:            if ip_info.get(k)>=100:                print('该ip在攻击你%s'%k)    time.sleep(60)

 

转载于:https://www.cnblogs.com/jinzhng/p/9169474.html

你可能感兴趣的文章
U盘出现大量乱码文件,并且不能彻底删除
查看>>
UEditor添加一个普通按钮及其他使用注意事项
查看>>
C语言的第一次实验报告
查看>>
spring JDBC 批量插入数据
查看>>
状态压缩题目小结
查看>>
Android WebView 开发具体解释(三)
查看>>
2016-2017-2 20155325实验二《Java面向对象程序设计》实验报告
查看>>
POJ.3145.Common Substrings(后缀数组 倍增 单调栈)
查看>>
BZOJ.1935.[SHOI2007]Tree园丁的烦恼(CDQ分治 三维偏序)
查看>>
c++可变参数(示例)
查看>>
4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap
查看>>
第522篇--DataTable to Excel C#
查看>>
C++\virtual 虚函数、纯虚函数
查看>>
asp.net mvc 4多级area实现技巧
查看>>
Solr
查看>>
MySQL binlog数据库同步技术总结
查看>>
算法设计--查找无序数组中第K大的数字
查看>>
Linux目录结构 重要目录结构详细
查看>>
Iris Classification on PyTorch
查看>>
HDU 1525 Euclid's Game 博弈
查看>>