python中的with open读取表格文件_python中的文件读写操作open和with的用法

f = open("regist2.txt", 'r', encoding='utf-8')

# r read 只能读不能写,文件不存在的时候会报错

# w write 文件不存在的话,给创建,不能读,写之前会清空原来的文件内容

# a 追加模式 不会清空原来的内容 追加写,但是不能读

# r+ 读写模式 文件不存在的时候会报错 可读可写,但是写的有问题(在最前方写,因为指针在0处)

# w+ 写读模式 文件不存在的时候给创建 清空文件内容,然后在写

# a+ 追加模式 文件不存在的时候给创建 可读可写 ,追加写,但是读不到内容(因为指针在末尾,所以读不到)

###########################文件的用法##########################

# f.seek(0) # 文件指针移到最前面

# les=f.readline() #读取一行的内容

# les3=f.readlines() #读取所有行的内容,然后放在list ['明天周一今天周日好\n', '11\n', '22']

# les3 = f.read() #读取文件的所有内容

#f.seek(0)

# f.truncate() # 从文件指针的问题开始删除内容,结合f.seek()使用

# f.tell() # 当前文件指针的位置

f.close() #open 之后要close 关闭文件

####另外一种文件打开的方式:

with open('a.txt') as f, open('b.txt', 'w') as f2: # 不用手动关闭 ,可以同时打开两个文件

for line in f:

print('每次循环的内容是',line) #一行行的读

#结合案例:

# 找到日志文件log中超过20次的ip地址(安全漏洞的设置,1分钟读取数据1次,循环读取,找到高危ip地址)

# 打开文件

# 依次读取文件的每行

# 取到每行的ip地址 split

# 获取到的ip值存放字典,存放次数{'ip1':1,'ip2':2,'ip3'} ip 是key,次数是value

# 循环字典,如果val 大于20,那么就输出来

# 每分钟监控上述内容

import time

point=0

while True: #一直循环

with open('access.log', encoding='utf-8') as f: # 当前状态下的文件内容

f.seek(point)

ips = {}

for line in f:

ip = line.split()[0] # 取到ip地址 不填写值,默认是空的情况下分隔1

if ip not in ips: # 判断ip是否出现过,没有出现过ip的次数就是1

ips[ip] = 1

else: # 出现过的话,次数在原来的基础上+1

ips[ip] += 1

point=f.tell() #获取当前读的位置记录下,下次从该位置再次读

for k, v in ips.items():

if v >= 20:

print('有问题的ip地址是%s' % k)

time.sleep(60) #等待一分钟

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值