Python 操作文件
open() 函数
| 模式 | 说明 |
|---|---|
| r | 只读模式 |
| w | 只写模式,文件不存在自动创建;存在则清空再写 |
| a | 只追加写,在文件最后追加写 |
| r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
| w+ | 打开一个文件用于写读,若文件已存在则将其清空,若该文件不存在,创建新文件。 |
| a+ | 打开一个文件用于读写。若文件已存在,文件指针将会在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
这里我们操作的文件
mytest 内容为:
1111111111111
2222222222222
3333333333333
readline 函数
f = open('mytest', 'r', encoding="utf8") # 以读模式打开
print(f.readline()) # 读一行内容
print(f.readline())
print(f.readline())
print(f.readline())
f.close() # 关闭文件
运行结果:

注意:
readline 函数会返回一行文件内容,因为 print 函数会换行,而文本中每行有 \n 这个换行符,所以每行内容之间会多了一个空白行。
readlines 函数
f = open('mytest', 'r', encoding="utf8")
print(f.readlines()) # 读取所有内容,以列表形式返回
f.close()
运行结果:

f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
print(i.strip()) # 通过 strip 函数除去每行后面的 \n 换行符
f.close()
运行结果:

需求:在文件第二行末尾加入 'klvchen'
number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
number += 1
if number == 2:
print(i.strip()+'klvchen')
else:
print(i.strip())
f.close()
运行结果:

优化版本(一):
number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
number += 1
if number == 2:
i = "".join([i.strip(), 'klvchen'])
print(i.strip())
f.close()
运行结果:

优化版本(二):
number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f: # for内部将 f 对象做成一个迭代器,用一行取一行,避免占用过多内存
number += 1
if number == 2:
i = "".join([i.strip(), 'klvchen'])
print(i.strip())
f.close()
运行结果:

tell() 函数
作用:返回文件的当前位置,即文件指针当前位置。
f = open('mytest', 'r', encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.close()
运行结果:

seek() 函数
作用: 移动文件读取指针到指定位置。
f = open('mytest', 'r', encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.seek(0)
print(f.tell())
print(f.read(10))
f.close()
运行结果:

flush() 函数
作用: 刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
import sys, time
for i in range(30):
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)
运行结果:

注意:这是个进度条的展示
类似的实现可以使用下面代码:
import time
for i in range(30):
print("*", end='', flush=True) # print 函数也可以设置 flush 参数
time.sleep(0.1)
在文件第二行后面添加内容
f_read = open('mytest', 'r', encoding='utf-8')
f_write = open('mytest2', 'w', encoding='utf-8')
number = 0
for line in f_read:
number += 1
if number == 2:
line = ''.join([line.strip(), ' hello \n'])
f_write.write(line)
f_write.close()
f_read.close()
运行结果:

使用另外一种方法打开文件,open 不需要自己调用 close()方法关闭
number = 0
with open('mytest', 'r') as f_read, open('mytest2', 'w') as f_write:
for line in f_read:
number += 1
if number == 2:
line = ''.join([line.strip(), ' hello \n'])
f_write.write(line)
运行结果:

Python 操作文件的更多相关文章
- Python操作文件、文件夹、字符串
Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...
- Python操作文件和目录
Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...
- python操作文件练习,配置haproxy
在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...
- Python操作文件-20181121
Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...
- 使用python操作文件实现购物车程序
使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...
- 用Python操作文件
用Python操作文件 用word操作一个文件的流程如下: 1.找到文件,双击打开. 2.读或修改. 3.保存&关闭. 用Python操作文件也差不多: f=open(filename) # ...
- python操作文件案例二则
前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...
- open -python操作文件
一打开文件 二操作文件 三关闭文件 open(文件,模式,编码),打开文件----->0101010(以二进制的方式打开)------>编码(open默认utf-8编码)------> ...
- Python操作文件文档
需要帮老师将44G的图书分类一下,人工当然累死了.所以用Python大法处理一下. 思路是读取文件目录下的书名,然后去百度百科查分类,如果还没有就去豆瓣,当当查.哪一个先找到其余的就不用找了.如果没有 ...
- Python 操作文件、文件夹、目录大全
# -*- coding: utf-8 -*- import os import shutil # 一. 路径操作:判断.获取和删除 #1. 得到当前工作目录,即当前Python脚本工作的目录路径: ...
随机推荐
- 8.AOP全自动
CGLIB字节码增强 l没有接口,只有实现类. 采用字节码增强框架 cglib,在运行时 创建目标类的子类,从而对目标类进行增强. 导入jar包: 自己导包(了解): 核心:hibernate-dis ...
- 学习WPF——使用Font-Awesome图标字体(一)
一.运行效果图 二.图标字体文件下载 http://fontawesome.dashgame.com/(这个网址可以下载图标字体文件) http://www.fontawesome.com.cn/(这 ...
- koa中返回404并且刷新后才正常的解决方案
概述 这几天学习koa2,有一些心得,记录下来,供以后开发时参考,相信对其他人也有用. 起因 这几天学习koa2,写的代码执行时有一个奇怪的bug:明明能够返回数据,却有时正常返回数据,有时偏偏给你返 ...
- assembly.xml
[官网地址]:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html <assembly xmlns=" ...
- moment.js 学习笔记
一.安装 / 使用 npm install moment 注:使用版本为 2.22.2 var moment = require('moment'); moment().format(); // 20 ...
- 【转】浮点数与IEEE 754
http://www.cnblogs.com/kingwolfofsky/archive/2011/07/21/2112299.html 浮点数 1. 什么是浮点数 在计算机系统的发展过程中,曾经 ...
- Python内置类型(5)--迭代器类型
指能够被内置函数next调用并不断返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值的对象称为迭代器(Iterator) 其实以上的说法只是侠义上的迭代器的定义,在pyt ...
- walle多渠道打包+Tinker(bugly)热更新集成+360加固(乐固)
这三个东东是干啥的相信大家都有所耳闻了,如果你没有听说过,请出门左拐,百度一下你就知道.这里不对这三个东东具体的集成方式做详细的介绍,因为官方文档已经写的很详细了,主要是对同时使用这三个东东时所需要注 ...
- 使用Dockerfile制作JDK+tomcat镜像
1.准备好jdk和tomcatapache-tomcat-8.5.32.tar.gzjdk-8u181-linux-x64.tar.gz 注意:a.jdk和tomcat记得从官网下载,否则制作出来的镜 ...
- 通过证书请求Https站点
前几天在做与平安银行对接接口,主要是给平安银行推送用户数据(申请贷款的用户),平安银行提供的是https的地址,请求https地址的时候还要发送证书,刚接到这个任务的时候一头雾水,百度上各种所搜,最后 ...