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")

 

posted @ 2018-04-07 13:30  马里亚纳仰望星空  Views(198)  Comments(0Edit  收藏  举报