python新手学习之文件读写之修改
文件除r、w、a方式打开外,还可以有多种组合方式如r+ w+ a+等多种方式
1、r+ 读写模式介绍,开始读是从一行开始读,写永远从最后开始写(类似于追加)
#
f = open("test.txt","r+",encoding ="utf-8")
f.readline()
f.readline()
f.readline()
# 不管如何读或者是seek。文件永远从尾部追加。写时候,不会影响读光标位置。
print("当前光标位置:",f.tell())
f.write("\n测试r+11")
print("第一次插入当前光标位置:",f.tell())
print(f.readline())
print("当前光标位置:",f.tell())
f.write("\n测试r+22")
print("第二次当前光标位置:",f.tell())
print(f.readline())
print(f.read()) E:\Users\xiajinqi\PycharmProjects\twoday\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py
当前光标位置: 51
第一次插入当前光标位置: 423
追加2 当前光标位置: 423
第二次当前光标位置: 435
追加3 追加4
追加5
追加6
追加7
追加8
追加9
追加10测试r+
测试r+
测试r+
测试r+
测试r+
测试r+
测试r+
测试r+
测试r+
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
测试r+11
测试r+22
2、w+ 写读(创建一个新的文件),读完以后,光标会在尾部,读时候需要从seek.并且读不影响写入到位置。在尾部写入。
# w+相对使用较少。创建一个新的文件读写
f = open("test2.txt","w+",encoding='utf-8')
f.write("1----------\n")
f.write("2----------\n")
f.write("3----------\n")
print(f.readline())
print(f.tell())
f.seek(0)
print(f.readline())
f.write("test----------\n")
f.seek(0)
print(f.read()) E:\Users\xiajinqi\PycharmProjects\twoday\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py 39
1---------- 1----------
2----------
3----------
test---------- Process finished with exit code 0
3 a + 追加读。不会创建新文件。在文件后面追加。
# w+相对使用较少。创建一个新的文件读写
f = open("test2.txt","a+",encoding='utf-8')
f.write("1----------\n")
f.write("2----------\n")
f.write("3----------\n")
print(f.readline())
print(f.tell())
f.seek(0)
print(f.readline())
f.write("test----------\n")
f.seek(0)
print(f.read())
4、rb和wb 以二进制方式读写。
# w+相对使用较少。创建一个新的文件读写
f = open("test2.txt","rb")
print(f.readline())
f.close() #.encode() 默认使用
f = open("test2.txt","wb")
print(f.write("binnary".encode()))
f.close() f = open("test2.txt","rb")
print(f.readline())
f.close()
5、文件修改,将文件中的内容替换。
# 将流年未亡香樟依旧 中 将流年未亡 改为时光已逝
old_file = open("test.txt",'r',encoding="utf-8")
new_file = open("test.txt.bak","w",encoding="utf-8") for line in old_file :
if "流年未亡香樟依旧" in line :
line = line.replace("流年未亡香樟依旧","时光已逝香樟依旧")
new_file.write(line)
old_file.close()
new_file.close() 歌词内容: 时光雨洒落在你我心里
消失了感情在脸上留守
时光已逝香樟依旧 夏天终于走到了最后 多少的执着输给了时间 多少的泪水流过了青春
5、python with open("test.txt","r",encoding:"utf-8") as f 的使用
with open("test.txt",'r',encoding="utf-8") as f :
print(f.read())
#打开多个文件
with open("test.txt",'r',encoding="utf-8") as f1 ,\
open("test.txt",'r',encoding="utf-8") as f2 :
print(f.read())
6、python实现shel的替换查找工作
# Author : xiajinqi
import sys
operotor_type = sys.arg[1]
find_file = sys.argv[2]
find_str = sys.argv[3]
replace_str = sys.arg[4] if operotor_type == 'f' :
with open(find_file, 'r+', encoding="utf-8") as f:
for line in f:
if find_str in line:
print(line)
else:
print("查找的内容不存在")
elif operotor_type == 'r' :
with open(find_file, 'r+', encoding="utf-8") as f1,\
open("test.bak", 'w+', encoding="utf-8") as f2:
for line in f1:
if find_str in line:
line =line.replace(find_file,find_str,replace_str)
f2.wirte(line)
else :
print("usage:python find.py f/r filename findstr replacestr")
python新手学习之文件读写之修改的更多相关文章
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...
- Python新手学习raise用法
当程序出现错误时,系统会自动引发异常.除此之外,Python也允许程序自行引发异常,自行引发异常使用 raise 语句来完成. 很多时候,系统是否要引发异常,可能需要根据应用的业务需求来决定,如果程序 ...
- python学习之文件读写,序列化(json,pickle,shelve)
python基础 文件读写 凡是读写文件,所有格式类型都是字符串形式传输 只读模式(默认) r f=open('a.txt','r')#文件不存在会报错 print(f.read())#获取到文件所 ...
- python文件读写及修改
转载:https://www.cnblogs.com/zhxwind/p/8761618.html 文件的读写有三种形式:读.写和追加. 一.读模式 r 和读写模式 r+ 1.读模式 r 读模式r特点 ...
- python笔记(三)---文件读写、修改文件内容、处理json、函数
文件读写(一) #r 只读,打开文件不存在的话,会报错 #w 只写,会清空原来文件的内容 #a 追加写,不会请求,打开的文件不存在的话,也会帮你新建的一个文件 print(f.read()) #获取到 ...
- python学习之文件读写入门(文件读的几种方式比较)
1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...
- 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化
IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...
- Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化
IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从 ...
- python 简单的txt文件读写
1 读取txt文件.跟c相比,python的文件读写简直是方便的可怕 首先是读取文件 首先获得文件名称,然后通过 open函数打开文件,通过for循环逐行读出文件内容 #!python file by ...
随机推荐
- 第二周 day2 python学习笔记
1. python中的三元运算: result=value1 if 条件 else value2 如果条件成立,result=value1 如果条件不成立,result=value2 2. pytho ...
- 你不能不知道到的Hook!
Hook是什么? hook翻译之后是钩子的意思,hook的用途主要是用来拦截消息的,看到这里大家可能会迷茫,What is a hook?所以这时就不得不普及一下操作系统的原理. 举个例子:假 ...
- OKEX期现对冲JS源代码分享(基于Fmz, Botvs实现)
什么是期现对冲?此策略风险和收益如何?期现对冲是利用期货和现货之间存在的差价进行套利.因为在交割日的时候,期货会按现货价格成交,当期货和现货一旦出现差价时,就可以通过做空期货做多现货(或做多期货卖出现 ...
- SAP Fiori + Vue = ?
2017年3月28日,我到国内一个SAP CRM客户那里,同他们的架构师关于二次开发的UI框架选择SAP UI5还是Vue进行了一番探讨.回到SAP研究院之后,我把这个问题扔到了公司的微信群里,引起了 ...
- Vue收藏资料
组件库的全局引用和按需引用:http://www.cnblogs.com/zhuanzhuanfe/p/7516745.html
- 创建Spring工程的基本步骤
第一步:加入jar包 第二步:创建配置文件 -申明javabean 配置 <?xml version="1.0" encoding="UTF-8"?> ...
- Swift编程语言学习1.1——常量与变量
常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...
- 【[NOI2016]区间】
发现自己的离散化姿势一直有问题 今天终于掌握了正确的姿势 虽然这并不能阻挡我noip退役爆零的历史进程 还是先来看看离散化怎么写吧,我以前都是这么写的 for(std::set<int>: ...
- webpack的正确安装方式
webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...
- dropout总结
1.伯努利分布:伯努利分布亦称“零一分布”.“两点分布”.称随机变量X有伯努利分布, 参数为p(0<p<1),如果它分别以概率p和1-p取1和0为值.EX= p,DX=p(1-p). 2. ...