Python文件处理

Python文件处理

1.什么是文件
    文件是操作系统为用户/应用程序提供的一种操作硬盘的抽象单位


2.为何要用文件
    用户/应用程序对文件的读写操作会由操作系统转换成具体的硬盘操作
    所以用户/用用程序可以通过简单的读写文件来间接地控制复杂的硬盘的存取操作
    实现将内存中的数据永久保存到硬盘中


3.如何用文件
    文件操作的基本步骤:
        f=open()打开文件,拿到一个文件对象f,f就相当于一个遥控器,可以向操作系统发送指令
        f.read()/f.write()读写文件,向操作系统发送读写文件指令
        f.close()关闭文件,回收操作系统的资源,一定要在程序结束前关闭打开的文件

 

4.文件的打开模式

  r:只读模式:以只读方式打开文件,如果该文件已存在则打开,如果该文件不存在时报错,文件的指针将会放在文件的开头,这是默认模式

    with open('a.txt',mode='rt',encoding='utf-8') as f:
        res1=f.read()
        print('1===>',res1)
        res2=f.read()
        print('2===>',res2)
        print(f.readable())#是否可读
        print(f.writable())#是否可写
        print(f.readline())#读取一行信息
        for i in f:
            print(i)  #遍历文件
        a=f.readlines()#将文件每行信息保存到列表中
        print(a)

  w:只写模式:以只写方式打开文件,如果该文件已存在则打开,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,则创建新文件

    with open('a.txt',mode='wt',encoding='utf-8') as f:
        print(f.readable())#是否可读
        print(f.writable())#是否可写
        f.write('我是帅哥\n')
        f.write('我是大帅哥\n')
        f.write('我是宇宙无敌大帅哥\n')
        f.writelines()#写入一个列表的信息

  a:只追加写模式:以只追加写方式打开文件,如果该文件已存在则打开,文件的指针将会放在文件的结尾,也就是说新的内容会被写入已有内容之后,如果该文件不存在,则创建新文件并从开头开始编辑,即原有内容会被删除

    with open('c.txt',mode='at',encoding='utf-8') as f:
        print(f.readable())#是否可读
        print(f.writable())#是否可写
        f.writelines()


5.控制读写文件单位的方式(必须于r\w\a连用)

  t:读写都是以字符串为单位,必须指定encoding参数
       b:读写都是以bytes为单位,不需要指定encoding参数

 

6.控制文件内指针的移动 f.seek

  文件内指针移动,只有t模式下的read(n)比较特殊.n代表的是字符的个数,除此以外文件内指针的移动都是以字节为单位

  f.seek(offset,whence)有两个参数:
  offset:代表控制指针移动的字节数
  whence:代表参照什么位置进行移动
    whence=0:参照文件开头移动(默认),可以在t和b模式下使用
    whence=1:参照当前所在的位置,必须在b模式下使用
    whence=2:参照文件末尾,必须在b模式下使用

 

7.文件修改的两种方式

  修改文件的方式一:
    1 将文件内容由硬盘全部读入内存
    2 在内存中完成修改
    3 将内存中修改后的结果覆盖写回硬盘
    优点:在文件修改的过程中硬盘上始终一份数据
    缺点:占用内存过多,不适用于大文件

  例如:

  

  修改文件的方式二:
    1 以读的方式打开源文件,以写的方式打开一个临时文件
    2 从源文件中每度一行内容,修改完毕后写入临时文件,直到源文件读取完毕
    3 删掉源文件,将临时文件重命名为源文件名
    优点:同一时刻在内存中只存在源文件的一行内容,不会占用过多的内存
    缺点:在文件修改的过程中,会出现源文件与临时文件共存,
          在硬盘上同一时刻上会由两份数据,即在修改的过程中会过多的占用硬盘

  

 

posted @ 2018-07-27 16:50  Yven  阅读(213)  评论(0编辑  收藏  举报