python学习笔记(五)-文件操作2
一、文件修改
现有文件file.txt,内容如下:
二十四节气歌
春雨惊春清谷天,
夏满芒夏暑相连。
秋处露秋寒霜降,
冬雪雪冬小大寒。
上半年逢六廿一,
下半年逢八廿三。
每月两节日期定,
最多相差一二天。
要求:将文件中‘一’替换成‘二’。
方法一
思路:
1、读取全部文件内容
2、将要修改的内容替换掉,并删除原先内容
3、将修改后的内容,写入文件中
with open('file','a+',encoding='utf-8') as f:
f.seek(0) #制定到文件开始的位置
all = f.read()
new_all = all.replace('一','二') #替换文件内容
f.seek(0)
f.truncate() #从当前位置开始删除文件内容
f.write(new_all)
f.flush()
方法二
思路:
1.读取一行修改一行。 ×
2.利用临时文件保存修改后的内容,在修改结束后原来文件删除掉,临时文件修改文件名替换成原文件。
import os
with open('file',encoding='utf-8') as f,open('file.bk','w',encoding='utf-8') as f2:
for line in f:
new_line = line.replace('一','二') #替换文件内容
f2.write(new_line)
os.remove('file') #删除原来文件
os.rename('file.bk','file') #将临时文件改名
二、文件读写
比如将网站中的图片下载到本地保存起来。 图片、视频都要以二进制方式保存的,所以打开文件方式要采用rb、ab、wb,以二进制模式打开。
import requests
url = 'https://www.cnblogs.com/images/logo_small.gif'
img = requests.get(url).content f = open('hhh.jpg','wb')# bytes ,以二进制模式打开
f.write(img)
三、监控日志脚本
如果同一个ip地址60s之内访问超过200次,那么就把ip加入黑名单
需求分析:
1、60秒读一次文件
2、分割,取到第一个元素,ip地址
3、把所有的ip加入到一个list里,如果ip次数超过200次,加入黑名单
import time
point = 0 #文件指针
while True:
ips = []#存放所有的ip地址
blk_set = set() #存放需要加入黑名单ip
with open('access.log',encoding='utf-8') as f:
f.seek(point)
for line in f:
ip = line.split()[0]
ips.append(ip)
if ips.count(ip)>200:
blk_set.add(ip)
for ip in blk_set: #这里是因为防止ip重复加入黑名单,因为集合是去重的,所以里面没有重复的ip
print('加入黑名单%s'%ip)
point = f.tell()
time.sleep(30)
import requests
url = 'https://www.cnblogs.com/images/logo_small.gif'
img = requests.get(url).content
f = open('hhh.jpg','wb')# bytes ,以二进制模式打开
f.write(img)
python学习笔记(五)-文件操作2的更多相关文章
- python学习笔记:文件操作和集合
一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
- python学习笔记(三):文件操作和集合
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...
- Python学习笔记 - day5 - 文件操作
Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- 我的Python学习笔记之文件操作
一,Python的文件类型有两种 1.文本文件 2.二进制文件 文件的操作: 1.打开文件,获取文件的控制权 2.读写文件 3.关闭文件,释放文件的控制权,如果不释放控制权,那么其他程序就不能访问此文 ...
- python学习笔记(四)-文件操作
文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...
随机推荐
- ad 差分布线 等长布线
差分要素: 1.原理图差分对名字后缀必须是 _n _p 2.规则改动 定义差分线宽和间距
- 单片机学习(八)点阵LED的使用
目录 一.点阵LED的理论知识 1. 点阵屏的打开方式 2. LED点阵简介 3. 点阵LED的结构和操作方式 4. 74HC595模块 PPT上的简介 串行转并行的工作原理 二.编码实现 1. C5 ...
- SQL 练习9
查询学过「张三」老师授课的同学的信息 SELECT Student.* from Student,Teacher,Course,SC WHERE Teacher.TId = Course.TId AN ...
- docker 安装mysql设置不区分表名大小写,创建minio,设置开机自启动
环境deepin mysql : docker run -p 3306:3306 --name tyer-mysql --restart=always -v $PWD/conf:/etc/mysql/ ...
- 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q ...
- NOIP 模拟 9 数颜色
题解 一道裸的数据结构题 正解是排序 \(+\) 二分,但是这怎么能有动态开点线段树好写呢? 于是我就打了暴力,骗了五十分. 对于每种颜色,我们在下标上开一颗线段树,对于交换若颜色相同则跳过,否则直接 ...
- DOS创建/删除/描述 windows服务
1.以管理员运行cmd ,输入 sc create test binPath= 程序路径\xxx.exe,主要 "="后面必须要空格 在服务里面查看结果 2.设置服务格式: sc ...
- C#比较两个对象是否为同一个对象。 Visual Studio调试器指南---多线程应用程序调试(一)
两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存. 1.使用object.ReferenceEquals() class Program { static void Main(strin ...
- C++_COM 入门
COM即组件对象模型(Component Object Model)是一种跨应用和语言共享二进制代码的方法.COM明确指出二进制模块(DLLS和EXES)必须被编译成与指定的结构匹配,其定义的二进制标 ...
- unity优化 — UGUI纹理格式的选择
首次界面打开加载的资源(如 贴图)会被缓存在内存中,再次打开界面由于内存中已有了资源 所以会更快.如何让首次打开界面会更快呢? 图片是否进行了有效的压缩.Android 平台下不带透明通道 优先使用E ...