文件除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. TP5:隐藏inde.php文件

    原文地址:https://www.cnblogs.com/wangjiayi/p/7943268.html 一,找到/public/.htaccess文件,如果你的入口文件已经移动到根目录下,那么你的 ...

  2. webpack学习(三)html-webpack-plugin插件

    一.html-webpack-plugin插件 简单创建 HTML 文件,用于服务器访问 例如:我们要为输出文件添加哈希值标记,避免老的不变的文件重新加载,避免新修改的文件受缓存影响. 在前后两次在终 ...

  3. 从0开始学CentOS7(2)---安装mariaDB、jdk1.8、redis

    继续前面的基础步骤~ 这个是centos7自带的数据库MariaDB,以前是mysql,到7以后,改为MariaDB... 1. MariaDB安装,没有往深处配置...懒得动了..参考:http:/ ...

  4. [转]java中的Static class

    转自:http://www.cnblogs.com/kissazi2/p/3971065.html Java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块 ...

  5. c++由string组成的struct初始化崩溃

    struct _UserInfo { string username; string password; string ip; string port; } _UserInfo str={}; 这样就 ...

  6. BIND简易教程(0):在Ubuntu下源码安装BIND(其实跟前面的教程没太大关系)

    之前介绍过BIND的基本使用啦.关于BIND的入门级使用方法见:http://www.cnblogs.com/anpengapple/p/5877661.html简易教程系列,本篇只讲BIND安装. ...

  7. SOJ3266 Birthday

    Time Limit: 1000MS Memory Limit: 65536 K Description Today is Windy's birthday. What can I say? Inpu ...

  8. android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……

    摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...

  9. Telnet配置

    一.环境 路由 IP:192.168.56.2 本地云 IP:192.168.56.1 二.认证模式 AAA模式 认证 授权 计费的安全技术 当配置用户界面的认证方式为AAA时, 用户登录设备时需要首 ...

  10. maven 打包时动态替换properties资源文件中的配置值

    pom build节点下面添加resource配置: <resources> <resource> <directory>src/main/resources/&l ...