人生苦短之Python文件的IO操作
在Python中也有涉及到文件的相关操作,从最简单的文件读取说起
- 文件读取
file = open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8')
print(file.read())
file.close()
使用open打开一个文件,第一个参数是文件路径,第二个参数是操作模式,第三个参数是文件编码。'r'代表的意思是只读方式,只可以读取文件里的内容。那么还有哪些操作呢

以行读取 readline(),后面括号可以添加数值指定读取几个字符:
for i in range(4):
print(file.readline())
使用readlines可以读取所有行,每一行都会作为一个元素成为一个列表:
for index, line in enumerate(file.readlines()):
if index == 8:
print('------------------分割线---------------')
continue
print(line)
file.close()
在这里我们读取每一行,当读到第八行的时候加上一条分割线
ps: enumerate函数,我们知道在普通的for循环里是没有偏移量,即在java中的index,在java中是for(int i=0;i<xx;i++)这种定义方式的,enumerate函数,它可以在循环中每次迭代的时候都会返回一个(index,'value')元组,这样既可以得到每次循环遍历的值,也由偏移量了。
但是需要注意的是,readlines是直接读取所有行,直接写入内存了,只适合一些小的文件。
在处理文件的时候需要每次都把文件给关闭,我们使用try...finally
try:
for index, line in enumerate(file.readlines()):
if index == 8:
print('------------------分割线---------------')
continue
print(line)
finally:
file.close()
但是每次都这样处理太麻烦了,Python中引入了with语句:
with open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8') as file:
for index, line in enumerate(file.readlines()):
if index == 8:
print('------------------分割线---------------')
continue
print(line)
- 文件的写入
file.write(),使用a模式追加写入
with open('/Users/macbookpro/Desktop/使用教程.txt', 'a', encoding='utf-8') as file:
file.write('一生挚爱')
- 文件修改
我们修改一句歌词:
with open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
with open('/Users/macbookpro/Desktop/使用教程.txt', 'w', encoding='utf-8') as new_file:
for line in lines:
if '红红落叶长埋尘土内' in line:
line = line.replace('红红落叶长埋尘土内', '你是我天边最美的云彩')
new_file.write(line)
在修改文件时如果直接使用w模式会将原本的文本清空覆盖,因此可以先用r的方式打开写入内存,再用w方式打开。
人生苦短之Python文件的IO操作的更多相关文章
- Atitit.跨语言 文件夹与文件的io操作集合 草案
Atitit.跨语言 文件夹与文件的io操作集合 草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...
- 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了. 我们可以不用重复 ...
- python文件及目录操作
python文件及目录操作 读/写文件 新建/打开文件 写入 #举个例子,打开D:\test\data.txt #以写入模式打开文件 #如果test(上级目录)不存在则报错 #如果data.txt(文 ...
- python文件的基础操作
import os print(,'-')) print(os.getcwd()) print(,'-')) print(os.listdir()) print(,'-')) print(os.lis ...
- python中的IO操作
python中的基本IO操作: 1) 键盘输入函数:raw_input(string),不作处理的显示,与返回. input(string),可以接受一个python表达式作为返回,python内部得 ...
- [ Python ] 文件的读写操作
1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...
- [Python基础]006.IO操作
IO操作 输入输出 print raw_input input 文件 打开文件 关闭文件 读文件 写文件 文件指针 实例 输入输出 输入输出方法都是Python的内建函数,并且不需要导入任何的包就可以 ...
- Linux文件的IO操作 一
系统调用 系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务 为了更好地保护内核空间, ...
- Python学习之-- IO 操作
阻塞IO / 非阻塞IO /IO多路复用 / 异步IO 说明:同步IO包含(阻塞IO / 非阻塞IO /IO多路复用),因为他们有个共同特性就是都需要内核态到用户态的一个等待. 基本概念解释,环境限定 ...
随机推荐
- awk 统计
命令太多,记不住,组合起来用一把…..示例文件: 1 2 3 4 5 6 7 8 9 10 11 [root@lovedan test]# cat a.txt hello good world hel ...
- 搭建服务与负载均衡的客户端-Spring Cloud学习第二天(非原创)
文章大纲 一.Eureka中的核心概念二.Spring RestTemplate详解三.代码实战服务与负载均衡的客户端四.项目源码与参考资料下载五.参考文章 一.Eureka中的核心概念 1. 服务提 ...
- javascript --- 原型继承与属性拷贝的综合应用
对于继承来说,主要目标就是将一些现有的功能据为己有.也就是说,我们在新建一个对象的时候,通常首先继承现有对象,然后再为其添加额外的属性和方法. 对此,我们可以通过一个函数调用来完成. 具体而言就是: ...
- mybatis学习网站
http://www.mybatis.org/mybatis-3/zh/index.html
- 投影纹理映射(Projective Texture Mapping) 【转】
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 投影纹理映射( Projective ...
- Google架构学习
http://hideto.iteye.com/blog/130815 原文:Google Architecture Google是伸缩性的王者.Google一直的目标就是构建高性能高伸缩性的基础组织 ...
- Git bare repo with multiple branches
http://stackoverflow.com/questions/9324762/git-bare-repo-with-multiple-branches Q: I want to make a ...
- 数据库如何让自增id重置
sql语句:truncate tablename; 会清空表的所有记录,并且使自增的id重置. 另外,navicat的截断表,就是这个功能. 它的清空表只会清空数据,不能使自增的id重置.
- Python的专有属性
- Android异步载入AsyncTask具体解释
曾看见有人说过.认为非常有道理.分享一下: 技术分为术和道两种: (1)具体做事的方法是术. (2)做事的原理和原则是道. 近期项目发现个重大问题.结果打log跟踪查是AsyncTask导 ...