文件处理seek以及修改内容的两种方式
f.seek(offset,whence)
offset代表文件的指针的偏移量,单位是字节bytes
whence代表参考物,有三个取值
# 0:参照文件的开头
# 1:参照当前文件指针所在位置
# 2: 参照文件末尾
# ps:快速移动到文件末尾f.seek(0,2) #强调:其中whence=1和whence=2只能在b模式下使用
f=open('c.txt',mode='rt',encoding='utf-8')
# f.seek(9,0) 每3个字节是一个汉字
print(f.tell()) # 每次统计都是从文件开头到当前指针所在位置
# print(f.readline()) f.close()
# 了解(**)
# 只有在t模式下的read(n),n代表的是字符个数,除此之外其他但凡涉及文件指针的移动都是以字节为单位的
# f=open('c.txt',mode='rt',encoding='utf-')
# print(f.read(3))
# f.close() # f=open('c.txt',mode='rb',)
# print(f.read(3).decode('utf-8'))
# f.close() # ab a+b r+b
f=open('b.txt',mode='at',)
f.truncate(9) # 参照物永远是文件开头
f.close()
#修改文件内容的方式一:
#思路:先将原文件内容一次性全部读入内存,然后在内存修改完毕后,再
#覆盖写回原文件
#优点:在修改期间,文件内容只有一份
#缺点:当文件过大的情况下或占用过多的内存空间
# with open('d.txt','rt',encoding='utf-8') as read_f:
# msg=read_f.read()
# msg=msg.replace('alex','xiang')
# # print(msg)
#
# with open('d.txt','wt',encoding='utf-8') as write_f:
# write_f.write(msg)
#修改文件内容的方式二:
#思路:
#1、以读的方式打开原文件,以写的方式打开一个新文件
#2、从原文件中循环读取每一行内容修改后写入新文件
#3、删除原文件,将新文件重命名为原文件的名字
#优点:同一时刻只有一行内容存在于内存中
#缺点:在修改期间,文件内容始终存在两份,但修改完毕后会只留一份
import os
with open('d.txt','rt',encoding='utf-8') as read_f,\
open('d.txt.swap','wt',encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('xiang','ALEXSB'))
os.remove('d.txt') # 删除老文件
os.rename('d.txt.swap','d.txt')
文件处理seek以及修改内容的两种方式的更多相关文章
- 云服务器 ECS Linux 服务器修改时区的两种方式
在云服务器 ECS Linux 系统中,以 Centos6.5 为例,可以通过如下两种方式,修改系统时区: 可以使用命令 tzselect,修改时区.操作示例: [root@localhost ~]# ...
- java文件末尾追加内容的两种方式
java 开发中,偶尔会遇到在文件末尾对文件内容进行追加,实际上有多种方式可以实现,简单介绍两种: 一种是通过RandomAccessFile类实现,另一种是通过FileWriter类来实现. 实现方 ...
- AspNetCore 文件上传(模型绑定、Ajax) 两种方式 get到了吗?
就目前来说,ASP.NET Core2.1了,已经相当成熟了,希望下个项目争取使用吧!! 上传文件的三种方式("我会的,说不定还有其他方式") 模型绑定 Ajax WebUploa ...
- 使用jQuery编辑删除页面内容,两种方式
第一种,比较少的编辑用这种,直接在那块内容上编辑,失去焦点即完成 前几天做编辑框的时候,需要只修改一个状态 //编辑角色 function editTr($this){ thatTd=$($this) ...
- Centos修改IP的两种方式
nmtui命令调出修改窗口:nmtui 重启网卡:/etc/init.d/network restart 或者:service network restart 方式二: 进入网络配置文件目录 首 ...
- centos 6.6 ios镜像文件 下载 官网和阿里云两种方式教你下载
1百度一下:centos 打开打开官网.选择这一项 CET CENTOS 2选择 DVD ISO,双击下载 直接选择左键点击下载 这里需要迅雷 方法 二 打开 https://mirrors.aliy ...
- 获取select文本框的下拉菜单文字内容的两种方式
<body> <div class="box"> <select id="sel"> <option value=&q ...
- 将html页改成jsp的两种方式
将html页改成jsp的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-08-13 将html页改成jsp有两种方法,第一种是直接修改html文件,另一种是新建jsp文件.下面为大 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
随机推荐
- linux设置重启
crontab -e 0 6 * * * reboot service crond restart
- 监控数组与foreach绑定-Knockout.js
html: <h2>Your seat reservations</h2> <table> <thead> <tr> ...
- Hive进阶_Hive数据的导入
使用Load语句执行数据的导入 语法: load data [local] inpath 'filepath' [overwrite] into table tablename [partition ...
- 简单记录下SpringCloud的微服务架构和一些概念
一.微服务的注册与发现——Eureka 和许多分布式设计一样,分布式的应用一般都会有一个服务中心,用于记录各个机器的信息.微服务架构也一样,我们把一个大的应用解耦成这么多个那么多个服务,那么在想要调用 ...
- openstack安装newton版本dashboard+cinder(六)
一.dashboard 1.安装dashboard及配置 [root@linux-node1 ~]# yum install openstack-dashboard -y #可以装任何地方只要能连接 ...
- Ubuntu搭建WordPress-MySQL-Apache
目标 技术博客www.xifarm.com有5年时间了. 原来在虚拟机/VPS上搭建,不过都是Windows系统下的. 最近突发奇想,试试迁移到Linux的Unbuntu下.说干就干,抽空用了大约3天 ...
- Spark Mllib里决策树回归分析使用.rootMeanSquaredError方法计算出以RMSE来评估模型的准确率(图文详解)
不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型 ...
- Ubuntu下安装nginx及使用
首先介绍以下nginx.下图来自百科介绍:详细介绍地址:https://baike.baidu.com/item/nginx/3817705?fr=aladdin 在我们平时的开发娱乐中,也许并不会涉 ...
- 《java学习三》jvm性能优化------jconsul
利用jconsul检测线程死锁, 死锁的线程,会有 已锁定 三个字 visualVm 也在jdk里 VisualVM 是一款免费的,集成了多 ...
- <Android 应用 之路> 天气预报(一)
Android天气预报客户端 设计思路 欢迎界面,版本号,应用名 + 数据后台加载(所有城市的信息获取) 数据加载完成后跳转到显示界面,显示所有查询到的城市的天气信息 欢迎界面和天气显示界面分别为单独 ...