文件除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新手学习之文件读写之修改的更多相关文章

  1. Python模块学习filecmp文件比较

    Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...

  2. Python新手学习raise用法

    当程序出现错误时,系统会自动引发异常.除此之外,Python也允许程序自行引发异常,自行引发异常使用 raise 语句来完成. 很多时候,系统是否要引发异常,可能需要根据应用的业务需求来决定,如果程序 ...

  3. python学习之文件读写,序列化(json,pickle,shelve)

    python基础 文件读写 凡是读写文件,所有格式类型都是字符串形式传输 只读模式(默认) r  f=open('a.txt','r')#文件不存在会报错 print(f.read())#获取到文件所 ...

  4. python文件读写及修改

    转载:https://www.cnblogs.com/zhxwind/p/8761618.html 文件的读写有三种形式:读.写和追加. 一.读模式 r 和读写模式 r+ 1.读模式 r 读模式r特点 ...

  5. python笔记(三)---文件读写、修改文件内容、处理json、函数

    文件读写(一) #r 只读,打开文件不存在的话,会报错 #w 只写,会清空原来文件的内容 #a 追加写,不会请求,打开的文件不存在的话,也会帮你新建的一个文件 print(f.read()) #获取到 ...

  6. python学习之文件读写入门(文件读的几种方式比较)

    1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...

  7. 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化

    IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...

  8. Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

    IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从 ...

  9. python 简单的txt文件读写

    1 读取txt文件.跟c相比,python的文件读写简直是方便的可怕 首先是读取文件 首先获得文件名称,然后通过 open函数打开文件,通过for循环逐行读出文件内容 #!python file by ...

随机推荐

  1. 第二周 day2 python学习笔记

    1. python中的三元运算: result=value1 if 条件 else value2 如果条件成立,result=value1 如果条件不成立,result=value2 2. pytho ...

  2. 你不能不知道到的Hook!

    Hook是什么?     hook翻译之后是钩子的意思,hook的用途主要是用来拦截消息的,看到这里大家可能会迷茫,What is a hook?所以这时就不得不普及一下操作系统的原理. 举个例子:假 ...

  3. OKEX期现对冲JS源代码分享(基于Fmz, Botvs实现)

    什么是期现对冲?此策略风险和收益如何?期现对冲是利用期货和现货之间存在的差价进行套利.因为在交割日的时候,期货会按现货价格成交,当期货和现货一旦出现差价时,就可以通过做空期货做多现货(或做多期货卖出现 ...

  4. SAP Fiori + Vue = ?

    2017年3月28日,我到国内一个SAP CRM客户那里,同他们的架构师关于二次开发的UI框架选择SAP UI5还是Vue进行了一番探讨.回到SAP研究院之后,我把这个问题扔到了公司的微信群里,引起了 ...

  5. Vue收藏资料

    组件库的全局引用和按需引用:http://www.cnblogs.com/zhuanzhuanfe/p/7516745.html

  6. 创建Spring工程的基本步骤

    第一步:加入jar包 第二步:创建配置文件 -申明javabean 配置 <?xml version="1.0" encoding="UTF-8"?> ...

  7. Swift编程语言学习1.1——常量与变量

    常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...

  8. 【[NOI2016]区间】

    发现自己的离散化姿势一直有问题 今天终于掌握了正确的姿势 虽然这并不能阻挡我noip退役爆零的历史进程 还是先来看看离散化怎么写吧,我以前都是这么写的 for(std::set<int>: ...

  9. webpack的正确安装方式

    webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...

  10. dropout总结

    1.伯努利分布:伯努利分布亦称“零一分布”.“两点分布”.称随机变量X有伯努利分布, 参数为p(0<p<1),如果它分别以概率p和1-p取1和0为值.EX= p,DX=p(1-p). 2. ...