zoukankan      html  css  js  c++  java
  • 文件处理

    文件处理

    什么事文件:应用程序提供一种操作硬盘的抽象单位

    为什么要用文件:用户、应用程序对文件读写操作系统转换成具体的硬盘操作,所以用户、应 用程序通过简单地读写文件,间接的控制哦复杂的应聘的存取操作,实现将内存中对的数据永久保存到硬盘中

    如何用文件

    用这种形式打开文件

    with open ('text.txt','r',encoding='utf8') as f

    第一个元素文件名,第二个:三种模式——r(只读),w(只写),a(追加),[同时还有两种文件的处理模式:t(处理大部分文档<默认>)与b(处理音频,图片,转换为Bytes)模式]

    r模式:(只读模式)文件不存在,报错,文件存在指针跳到文件的开头

    w模式:(只写模式)文件不存在创建文件,文件存在清空文件,文件指针自然跑到开头

    a模式:(追加模式)文件不存在时会创建文档,文件存在文件指针移动到最后

    w与a的异同:

    1,相同:在打开文件不关闭的情况下,连续写入,新写的内容总会跟到前面的内容之后,

    2,不同点:以A模式重新打开文件不会清空文件内容,会将文件指针已到末尾,新内容添加到最后

    t , b 模式不能单独使用,必须与r/w/a其中一个联合使用

    默认t:文本模式:

    1.读写文件都是以字符串为单位

    2.只能针对文本文件

    3,必须指定encoding参数

    b:二进制模式

    1.读写文件都是二进制为单位

    2.可以针对所有文件

    3.一定不能指定encoding参数

    对比:

    1.操作文本文件时候T模式帮我们省去了编码解码的环节,

    2,对于非文本:音频,视频等职能使用B模式

    操作——如何用:

    f.read ()一次性读取所有内容,文件指针移到文件末尾

    f.readline()一次性读取一行内容,贯标移动到第二行开头

    f.readlins()读取每一行内容,返回列表

    为了防止内存溢出

    用以下两种方法:

    with open ('a.txt','r',encoding = "utf8")as f:    
    for line in f:        
    print(line,end='')

    with open ('1.mp4','rb') as f:

    while True:

    data = f.read (1024)#每次只读取1024个bytes到内存中

    if len (data) == 0:

    break

    print(data)

    f,readable()#是否可读

    f.writable()#是否可写

    主动控制文件内指针移动:

    seek(x,y),x--->字符相对偏移动,y---->模式选择(0模式:指针从文件开头开始移动,1,模式:指针从当前位置开始移动,2模式:指针从文件尾开始移动)

    with open( 'b.txt','r',encoding='utf8')as f: f.seek(3,0) print(f.tell())#返回指针在的位数,bytes print(f.read())

    with open( 'b.txt','rb')as f: f.seek(3,1) print(f.tell())#返回指针在的位数,bytes

    f.seek(3, 1)
    print(f.tell()) # 返回指针在的位数,bytes

    with open ('b.txt','rb')as f: f.seek(0,2) print(f.tell()) f.seek(-3,2) print(f.read().decode('utf8')) 文件修改 方式一:读取文件,再打开文件写入修改后的文件 with open ('b.txt','r',encoding='utf8') as f: date = f.read() with open('b.txt','w',encoding='utf8')as f: f.write(date.replace('qw','ACE')) 方式一:利用OS模块,直接删除以前的文件夹,替换文件名 import os with open ('b.txt','r',encoding='utf8')as rf, open ('b_b.txt','w',encoding='utf8')as wf: for line in rf: wf.write(line.replace('ACE','TANK')) os.remove('b.txt') os.rename('b_b.txt','b.txt')

     

  • 相关阅读:
    Practice2_vector_sort_struct
    a demo of vector of STL
    抽象漏洞原则
    不是抽象的漏洞,而是本质复杂性
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017多校第8场 HDU 6134 Battlestation Operational 莫比乌斯反演
    2017多校第5场 HDU 6085 Rikka with Candies bitset
  • 原文地址:https://www.cnblogs.com/fxsm/p/11823535.html
Copyright © 2011-2022 走看看