文件操作

文件操作

1.什么是文件

  文件是操作系统为应用程序或用户提供的一种硬盘操作的虚拟单位

  强调:文件是操作系统提供的虚拟单位

      应用程序或者用户对文件的读写操作其实都是向操作系统发送指令

2.为什么要用文件

  文件对应的硬盘空间,如果需要考虑营救保存数据那必须使用文件

3.如何使用文件

1.操作文件的流程

  #1.打开文件,得到文件句柄并赋值给一个变量

   绝对路径:win     c:\a\b\c       linux:  a/b/c/                 

   相对路径:相对于当前执行文件所在的文件夹为起始位置开始查找

   f=open('test.txt','r',encoding='UTF-8')   #默认以r方式打开

    #2.通过句柄对文件进行操作

     data=f.read()

    #3.关闭文件

   f.close()  向操作系统发送指令,让操作系统关闭打开的文件,回收操作系统资源

  流程分析:#1.由应用程序向操作系统发起系统调用open(....)

       #2.操作系统打开文件,并返回一个文件句柄给应用程序

       #3.应用程序将文件句柄复制给f

2.打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量

 del f 必须在f.close()之后

 上下文管理

 with open() as f,\open() as f:

 with open() as f

    pass

3.python3中操作文件只有一种 open()

 python2中操作文件有file()和open():file()构建文件open()打开文件

4.打开文件的模式

  文件句柄=open('文件路径','模式')

  #1. 打开文件的模式有(默认为文本模式):

   r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】无论读写都是以字为单位只能操作文本文件

  w,只写模式【不可读;不存在则创建;存在则清空内容】

  a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】

   #2. 对于非文本文件,我们只能使用b模式,不需要指定encoding

  rb

  wb

  ab

  以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

  #3. 了解部分  

  '+'表示可以同时读写某个文件

  r+,读写

  w+, 写读

  a+, 写读

       x 只写不读(不可读,不存在则创建,存在则报错)

  x+ 写读

  xb

5.操作文件的方法

  掌握:

  f.read()读取所有内容,光标放在文件末尾

  f.readline() 读取一行内容,光标移到第二行末尾

  f.readlines() 读取每一行内容,存放在列表中

  f.write() 针对文本模式的写,需要自己进行换行

  f.write().encode() 针对b模式的写,需要自己写换行符

  f.writelines() 文件模式

  f.writelines([bytes(),encoding='',''.encode()]) b模式

  #了解

  f.readable()文件是否可读

  f.writable()     文件是否可写

  f.closed 文件是否关闭

  f.encoding 如果文件打开模式为b模式,则没有该属性

  f.flush() 立刻将文件内筒从内存刷到硬盘

  f.name

6.文件内光标移动

  1.read(3)

    文件打开方式为文本模式时,代表读取3个字符

    文件打开方式为b模式时,代表读取3个字节

  2.其余的文件内光标移动都是以字节为单位如seek,tell,truncate

    #1.seek有三种移动方式0,1,2,其中1,2,必须b模式下进行,以bytes为单位进行移动

    #2.truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打        开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

7.文件的修改

  文件的数据是存放在硬盘上的,因此只存在覆盖,不存在修改

  方法一:

    将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再    由内存覆盖到硬盘(word,vim,nodpad++等编辑器)

  1.以读的方式打开源文件   2.将文件内容一次性全读入内存,在内存完成修改

  3.以写的方式打开源文件,然后将内容一次性写入到源文件

  方法二:

    将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文    件覆盖源文件

posted @ 2018-11-21 20:44  yyf1  阅读(113)  评论(0编辑  收藏  举报