day08-2018-10--26 文件处理

                                                 文件基本操作

with open('stu_score.txt','r',encoding='utf-8') as f:
    print(f.read(),end='')
            #
            #
            #
            #
            #
    f.seek(0)
    print(f.readline())
#
    f.seek(0)
    print(f.readlines())
#['一
', '二
', '三
', '四
', '五
']
    print(f.readable())
#True

    print(f.writable())
#False
    print(f.name)
#stu_score.txt
    print(f.encoding)
#utf-8

                                                  光标的操作

#梦想是有……实力的人才能谈论的现实。
#Didn't double diligence, neither can nor a genius.
with open('stu_score.txt','r+',encoding='utf-8') as f:
    print(f.tell())
    print(f.read(2))#打开方式是文本模式,所以是读取2个字符
    #梦想
    #
    f.seek(0)#光标归0
    #0
    f.seek(6)#移动了6个字节,也就是2(utf-8,3个字节表示一个汉字)个中文字符
    print(f.tell())
    #6
    print(f.readline())
    #是……有实力的人才能谈论的现实。
    print(f.tell())
    #55
    f.seek(61)
    print(f.readline())
    # double diligence, neither can nor a genius.
    f.seek(0,2)#到末尾
    print(f.tell())#
    print(f.readline())#读不出什么了

                                          文件修改

#文件修改
# 他很有钱
# 他很帅
# 但他依然很孤独
# 因为他明明可以靠脸吃饭,却在学python
# 方式一:将硬盘存放的该文件的内容全部加载到内存,
# 在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
import os
with open('stu_score.txt','r',encoding='utf-8') as read_f, 
        open('stu_score.txt.bak','w',encoding='utf-8') as write_f:
    data=read_f.read()#全部读入内存,如果文件很大,会很卡
    data=data.replace('','')#在内存中完成修改
    write_f.write(data)#一次性写入新文件
os.remove('stu_score.txt')
os.rename('stu_score.txt.bak','stu_score.txt')
#我很有钱
#我很帅
#但我依然很孤独
#因为我明明可以靠脸吃饭,却在学python

# 方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
import os
with open('stu_score.txt','r',encoding='utf-8') as read_f, 
        open('stu_score.txt.bak','w',encoding='utf-8') as write_f:
    for line in read_f:
        line=line.replace('','')
        write_f.write(line)
os.remove('stu_score.txt')
os.rename('stu_score.txt.bak','stu_score.txt')
# 你很有钱
# 你很帅
# 但你依然很孤独
# 因为你明明可以靠脸吃饭,却在学python
原文地址:https://www.cnblogs.com/VastTry/p/9857221.html