python对文件的操作
对文件操作的步骤:
1、打开文件
2、读写文件
3、关闭文件 一、读取文件的方法有三种:read(),readline(),readlines()
f.readline() #每次读出一行数据,返回的是一个list,读完指针下移,适合大文件
f.readlines() #读取文件里所有数据,保存在一个list变量中,每行作为一个元素,换行会读到\n,读取大文件比较占内存
f.read(size) #从当前位置起读取size字节文件,若无参数size,则读取至文件结束为止,文件不存在的时候会报错
#输出为字符串对象,需要对字符串进行分割后才能使用(f.read().splitlines())
A、read()方法:
f = open('file.txt','r') #以只读的方式打开一个文件,获取文件句柄,如果只读的话,r可以不写,默认只读
f.read()
print(f)
date = f.read().splitlines()
print(date)
f.close() #关闭文件 B、readline()方法:
f = open('file.txt')
line = f.readline()
while line:
print(line)
line = f.readline()
f.close() C、readlines()方法:
f = open('file.txt')
lines = f.readlines()
for line in lines:
print(line)
f.close() 二、打开文件的模式
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】
"+"表示可以同时读写文件
r+,【可读、可写;可追加,如果打开的文件不存在的话,会报错】
w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】
a+,【追加读写模式,不存在则创建;存在则只追加内容,读不到东西;】
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU、r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb、wb、ab(断点续传)
r+b、w+b、a+b
三、文件操作
f = open('file.txt','r+',encoding='utf-8') #打开文件,并赋值给f,encoding='utf-8'让中文可以正常显示不会报错
f.readline() #读一行
f.readable() #判断文件是否可读
fr.writable() #判断文件是否可写
fr.encoding #打印文件的编码
f.read() #读取所有内容,大文件不要用
f.readlines() #读取所有文件内容,大文件不要用
f.tell() #返回光标所在位置
f.seek(0) #移动指针到文件的哪个位置,0表示最前面
f.seek(0,2) #移动指针到文件的末尾;两个参数,表示偏移量,从XX开始偏移,默认0:开头,1:当前位置,2:末尾
f.write('XXX') #写入内容
f.fulsh() #写入文件后,立即从内容把数据写到磁盘中
f.truncate() #从文件指针的位置清空文件内容
f.writelines(['XX','XX']) #将一个列表写入文件中
f.close() #关闭文件 #f.write()和f.writelines区别
1、write()需要传入一个字符串做为参数,否则会报错
2、writelines()既可以传入字符串又可以传入一个字符序列,并将该字符序列写入文件
3、如果使用list写入txt文件,可以写入多行;如果使用str写入txt文件,则只能写入一行。
4、在list中的每个元素末尾必须加上’\n’的换行符,否则list中的各元素将写入一行之中
#例如:
l = ['123\n','456\n','789\n']
f.writeline(l) #传一个list,把list里面的每一个元素,写到文件里
f = open('a.txt')
f.close() ##循环文件对象,每次取一行,读完一行的话,就会释放一行的内容
f = open('file.txt')
for line in f:
print(line) #with自动关闭文件
在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:
with open('file.txt','r') as f: #打开一个文件,把这个文件的句柄赋给f,代码自己判断文件调用完,自动关闭
for line in f:
print(line)
with open('file.txt') as fr,with open('file_bak','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
for line in fr #循环file.txt中每一行
fw.write(line) #写到file_bak文件中 四、修改文件
方法一:(简单粗暴的)文件内容全部读取到内容,原有文件内容清空,重写新内容
with open('account.txt','r+') as fr:
l = []
for line in f:
line = line.strip().split(',')
sum = int(line_list[0] + line_list[1] + line_list[2]
avg = sum //3
new_line = '%s,%s\n'%(line,avg)
l.append(new_res)
fr.seek(0)
fr.truncate()
fr.write(l)
fr.close()
方法二:(高效的方式重点)先打开原来文件,再打开一个空文件,循环处理原来文件每一行,处理后写入新文件,把原来文件删掉,把新文件改为原来名字
with open('account.txt') as fr,with open('account_new','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
for line in fr:#循环file.txt中的每一行
line = line.strip()
line_list = line.split(',')
sum = int(line_list[0] + line_list[1] + line_list[2]
avg = sum //3
new_line = '%s,%s\n'%(line,avg)
fw.write(new_line)#写到文件中
fw.flush() #立即写入文件
import os #文件操作
os.remove('account.txt') #删除源文件
os.rename('account_new','account') #修改文件名
五、练习
# 找到超过20次的ip地址
#1、打开文件
#2、依次读取文件里面的每行
#3、取到每行里面的ip地址 split
#4、存到字典里面,ip做key,次数做value
#5、循环字典,如果value大于20,那么就输出出来
#6、每隔1分钟监控一次
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]
if ip not in ips:
ips[ip] = 1
else:
ips[ip] += 1
point = f.tell()
for k,v in ips.items():
if v >=20:
print('有问题的ip地址是%s'%k)
time.sleep(60)


python-文件读写的更多相关文章

  1. python文件读写及形式转化和CGI的简单应用

    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...

  2. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  3. Python 文件读写,条件循环(三次登录锁定账号实例)

    通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...

  4. 【学习】python文件读写,用with open as的好处,非常好【转载】

    原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...

  5. python文件读写,以后就用with open语句

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  6. Python文件读写(open(),close(),with open() as f...)

    Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...

  7. python 文件读写方式

    一.普通文件读写方式 1.读取文件信息: with open('/path/to/file', 'r') as f: content = f.read() 2.写入文件中: with open('/U ...

  8. Python文件读写、StringIO和BytesIO

    1 IO的含义 在计算机中,IO是Input/Output的简写,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就 ...

  9. python文件读写小结

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  10. Python文件读写及网站显示

    一.关于文件读写的笔记 (一) 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容 文件都是按照2进制进行存储的,但在表现形式上有2种:文本文件和二进制文件. 1. 文本文件 文本 ...

随机推荐

  1. .Net Collection Distinct 去重

    由于业务场景的需要,海量的数据需要进行处理.组装,难免会出现冗余的重复数据.如何处理重复的数据就是一个问题. 简单的集合中,去重就可以用linq distinct来完成.对于复杂的集合直接使用dist ...

  2. html5 css练习,弹性三栏布局

    *{    margin: 0;    padding: 0;} body,html{    width: 100%;    height: 100%;        font: bold 24px ...

  3. pandas 时间格式转换

    OUTLINE 常见的时间字符串与timestamp之间的转换 日期与timestamp之间的转换 常见的时间字符串与timestamp之间的转换 这里说的字符串不是一般意义上的字符串,是指在读取日期 ...

  4. Referer图片防盗链

    前几天讲了<nginx下载防盗链>,今天继续说下图片防盗链. 他们两个使用的指令不同,前者使用secure link,并且需要程序配合,但是效果非常好;后者不需要程序配合,根据图片来源来实 ...

  5. winform Combobox出现System.Data.DataRowView的解决的方法

    个人总结: 1.触发了SelectedIndexChanged事件时:comboBox1.DataSource = dt;要放在comboBox1.SelectedIndex = 0;的上面 comb ...

  6. docker-images(镜像)

    一.获取镜像 docker search NAME  搜索引擎查找镜像 docker pull NAME:<TAG> 拉去镜像 NAME:表示镜像名称/镜像仓库的名称 TAG: 表示镜像的 ...

  7. HL-D793G七位蓝色+PT6311驱动

    和之前那块一起买的.又画了这个屏幕驱动,还画了灯丝电源驱动,和以前画的stm8核心板在JLC拼板. 亚光黑颜色,不单独收钱! 切好水洗吹干! 忘记给排针加丝印,手写代之. 焊接的时候,脑子发热,以为把 ...

  8. deno深入揭秘及未来展望

    deno node.js之父Ryan Dahl在一个月前发起了名为deno的项目,项目的初衷是打造一个基于v8引擎的安全的TypeScript运行时,同时实现HTML5的基础API.所谓的安全运行时, ...

  9. Python脚本备份

    #!/usr/bin/python3 # -*- coding:utf- -*- # 保证源程序可以输入汉字 print bool([]) # 任何为零的数字或空集(空列表.空元组和空字典等)均为Fa ...

  10. android开发_文本按钮 与 输入框

    1 TextView:    属性与值 android:text="文本" android:textSize="20sp"              //sp为 ...