day4_高效处理文件
read()将文件内容从磁盘中全部读出,放到内存,再给cpu处理,性能低,如果文件量大,很容易内存溢出或卡死。
高效方式:
方式一:一般不用的,代码行多
f = open('users.txt','r',encoding='utf-8') #打开文件
#第一种方式:
while True: #写个死循环,知道空字符串停止循环,也就是没有内容了(文件中空行也是有东西的,不代表是空字符串)
line = f.readline() #line每次循环,都被替换,这个方法性能高
if line!='':
print('line',line)
else:
print('文件内容都读完了,结束了')
break
方式二:
# 第二种方式:
for line in f: #把文件里的每一行都读到
print(line)
练习题:
#1、要从日志里面找到1分钟之内访问超过200次的
#2、每分钟都运行一次 # 1、读取文件内容,获取到ip地址
# 2、把每个ip地址存起来 {}
# 3、判断ip访问的次数是否超过200次
# 4、加入黑名单 print import time
point = 0 #初始的位置,不能定义到循环里面
while True:
f = open('access.log', encoding='utf-8')
ip_dict = {} # 这个不要放在外面,不然字典内容特别大
f.seek(point)
for line in f: #循环取文件里面每行数据
ip = line.split()[0] #按照空格分割,取第一个元素就ip
if ip in ip_dict: #判断这个ip是否存在,如果存在,则value值+1
ip_dict[ip] += 1 #如果存在的话,次数加+1
else:
ip_dict[ip] = 1 #如果第一次遇见的ip,则value值就是1
point = f.tell() #记录文件指针位置
f.close()
for ip,ipcount in ip_dict.items():#循环这个字典,判断次数大于200的
if ipcount > 200:
print('%s 加入黑名单'%ip)
time.sleep(60)#定时运行 60秒之后再读
day4_高效处理文件的更多相关文章
- tengine lua 开源一 调用内部接口高效发送文件
tengine lua 开源一 调用内部接口高效发送文件 开源自己封装的sendfile 模块,可以高效的通过lua发送文件 源码地址:https://github.com/weinyzhou/Lu ...
- php高效遍历文件夹、高效读取文件
/** * PHP高效遍历文件夹(大量文件不会卡死) * @param string $path 目录路径 * @param integer $level 目录深度 */ function fn_sc ...
- python语言(三)文件修改、函数、json操作、监控日志代码、高效读取文件
1.文件操作(2) 代码 f = open('a.txt','a') # "a" 如果源文件不在,会自动创建 f.write('abc') result = f.read() ...
- Kafka深入理解-1:Kafka高效的文件存储设计
文章摘自:美团点评技术团队 Kafka文件存储机制那些事 Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日 ...
- c# 高效读写文件
一.同步读写文件(在并发情况下不会发生文件被占用异常) static void Main(string[] args) { Parallel.For(0, 10000, e => { strin ...
- java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件
字符缓冲流的特殊方法: A.BufferedWriter: public void newLine():根据系统来决定换行符 private static void write() throws IO ...
- Java NIO FileVisitor 高效删除文件
在公司项目中,由于做个二维码扫码平台项目,预计每天产生的二维码图片达到十几G,所以要做个定时清理任务来定时清理图片,根据不同场景保留图片,规则是:1.二维码统一登录图片几个小时有效 2.电子名片二 ...
- java之高效操作文件
代码: import java.io.IOException; import java.nio.file.FileVisitOption; import java.nio.file.FileVisit ...
- Java缓冲流高效大文件的复制实例
public class BufferedDemo { public static void main(String[] args) throws FileNotFoundException { // ...
随机推荐
- PHP更改自动加载的顺序
composer的锅 自从PHPer们用上了composer后,对于传统的加载方式倒是不会用了,可谓是"收之东隅,失之桑榆". 下面说一下怎么改变加载顺序来覆写Laravel中的h ...
- 小patch(psu)的打法 -- 实例
从patch中的readme来. bug:10214450 测试数据: SQL> create table t (t timestamp); Table created. SQL ...
- Linux 下mysql的定时备份
在实际项目中,数据库是要经常备份的,就是为了防止突发情况,前段时间,我的数据库就遭遇了入侵要支付B特比的,结果数据全没了,哎,还好当时只是个测试库,不过有了这次危机,也就开始意识到了这个问题了. 先写 ...
- 【emWin】例程十二:FontCvt生成字库
介绍: 本例程介绍使用官方字库生成软件FontCvt5.22生成字库文件,并在液晶上显示文字. 实验指导书及代码包下载: 链接:http://pan.baidu.com/s/1eSkliDW 密码:o ...
- 【WPF】点击滑动条(Slider),移动滑块(Tick)到鼠标点击的位置
问题:点击Slider控件时,滑块会自动跳到滑动条的最边缘位置,无法跳到鼠标点击的位置上. 办法:给Slider控件设置属性IsMoveToPointEnabled="True"即 ...
- mysql解决大量time_wait
mysql解决大量time_wait 命令查看TIME_WAIT连接数 netstat -ae|grep "TIME_WAIT" |wc -l 早上登陆服务器的时候输入ne ...
- java 注解默认值
package com.zejian.annotationdemo; import java.lang.annotation.ElementType; import java.lang.annotat ...
- php memcached 扩展
php_memcache.dll下载地址:http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/ 查看php线程:phpinfo ...
- Unity3D Shader 内置函数
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...
- solus下 修改 crate-react-app 的默认下载依赖方式为 yarn
vim /usr/local/share/.config/yarn/global/node_modules/create-react-app/createReactApp.js 或者是 修改 /usr ...