python基础===文件对象的访问模式,以及计数循环的使用方法
案例一:
一个几M的文本文件,需要每隔100行写到新的文件中。
代码实现如下:
with open(r'f:\book.txt','rb') as f1:
with open(r'f:\book2.txt','wb') as f2:
i = 0
for line in f1:
i+=1
if i % 33 ==0:
f2.write(line)
这里补充一个知识点:
文件对象的访问模式
| 文件模式 | 操作 |
| r | 以读方式打开 |
| w | 以写的方式打开(必要时会清空) |
| r+ | 以读写模式打开 |
| w+ | 以读写模式打开(必要时会清空) |
| a | 以追加模式打开,不会清空。(必要时创建新文件) |
| a+ | 以读写模式打开,不会清空。(必要时创建新文件) |
| ab | 以二进制追加模式打开,不会清空。(必要时创建新文件) |
| ab+ | 以二进制读写模式打开。(必要时创建新文件) |
| rb+ | 以二进制读写模式打开 |
| rb | 以二进制读模式打开 |
| wb | 以二进制读写模式打开(必要时会清空) |
在执行上面代码的时候,如果以r或者w的模式打开。会报错:
File "C:/Users/yangbo/Desktop/计数循环.py", line 4, in <module>
for line in f1:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 18: illegal multibyte sequence
所以,必须以二进制模式打开!
案例二:
请问一个日志文本文件有2000行,我要提取其中的100行到200行,怎么做?
with open(r'f:\book.txt','rb') as f1:
with open(r'f:\book2.txt','wb') as f2: #以二进制追加模式打开!如果没有book2.txt文件,新建一个
i = 0
while True:
line = f1.readline()
i += 1
if i>100 and i<200:
f2.write(line)
if i>200:
break
if not line:
break
python基础===文件对象的访问模式,以及计数循环的使用方法的更多相关文章
- Python文件对象的访问模式
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
- python 基础-文件读写'r' 和 'rb'区别
原文链接: python基础-文件读写'r' 和 'rb'区别 一.Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 1.文件使用方式标识 'r ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python打开文件可以有多种模式
一.python打开文件可以有多种模式,读模式.写模式.追加模式,同时读写的模式等等,这里主要介绍同时进行读写的模式r+ python通过open方法打开文件 file_handler = open( ...
- Python获得文件时间戳 异常访问监控 邮件定时提醒
Python获得文件时间戳 异常访问监控 邮件定时提醒
- python每个文件都需要顶部注释,那今天介绍一个方法,只需要设置一次,下次新建python文件后,注释自动出现在顶部的方法
python每个文件都需要顶部注释,那今天介绍一个方法,只需要设置一次,下次新建python文件后,注释自动出现在顶部的方法 只需要在file -----settings------file and ...
- 转:导出csv文件数字会自动变科学计数法的解决方法
导出csv文件数字会自动变科学计数法的解决方法 其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科 ...
- python基础——文件访问模式
文件访问模式 访问模式 说明 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. w 打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. a 打开一个 ...
随机推荐
- 多版本python import 问题解决方案
原文http://www.tuicool.com/articles/EnE7nm6 多版本Python共存[支持使用pip安装包] 有时特殊需要会要用到高版本的Python, 但是系统自带的版本又是很 ...
- Week1 Team Homework #1 from Z.XML-总结学长经验教训
谭传奇学长: 我们的弯路可能是,一开始没有从最基础的部分开始迭代开发,一开始就想的太远了一些,每一步开的有点太大了,所以可能有些东西最后就连不上,也没有能够按时完成.如果可以先做出一个能用的版本,然后 ...
- neutron DVR
DVR 简介 DVR 提出的背景 在 Neutron 的网络环境中,跨子网的虚机通信是需要通过 Neutron 的路由器.这既包括不同子网的虚拟机之间的通信,又包括虚拟机与外网之间的通信.在 DVR ...
- 使用window.getSelection()获取div中选中文字内容及位置
div添加一个弹出事件: $(document).ready(function () { $("#marked-area").mouseup(function (e) { $sco ...
- background 背景图铺满界面
background <body background="/image/1.png" style=" background-repeat:no-repeat ; b ...
- Div+Css制作圆
Div+Css制作四分之一圆主要是使用Css3.0中的border-radius这个圆角隐藏属性.利用这一属性,我们可以画圆,画半圆,四分之三圆,四分之一圆等.以后我会更新…… 如何使用border- ...
- Lyft Level 5 Challenge 2018 - Final Round Div. 1没翻车记
夜晚使人着迷.没有猝死非常感动. A:显然对于水平线段,只有横坐标的左端点为1的时候才可能对答案产生影响:对于竖直直线,如果要删一定是删去一段前缀.枚举竖直直线删到哪一条,记一下需要删几条水平线段就可 ...
- Numpy array学习笔记
- 大步小步算法模板题, poj2417
大步小步模板 (hash稍微有一点麻烦, poj不支持C++11略坑) #include <iostream> #include <vector> #include <c ...
- [Leetcode] Palindrome number 判断回文数
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...