python_10_文件操作

文件操作逻辑?

  1. 打开文件,赋值给一个对象
  2. 用对象操作文件
  3. 关闭文件

如何打开文件?

       在windows中,默认格式gbk,python3.x默认unicode(utf-8),要指定编码值

       语法:

  f = open(“文件名”, 打开模式,encoding = “utf-8”)

        -- 打开文件,赋给f,f叫文件句柄(文件内存对象)

                f.操作

                f.close()        -- 要手动关闭

         - 句柄包含(文件名字,大小,字符编码,硬盘上起始位置)

       另:

              with open(“文件名”, 打开模式,encoding = “utf-8”) as f:

        -- 可以同时打开多个文件,逗号隔开

                     f.操作

                 -- 不需要手动关闭,有个强制缩进

       打开模式:

                     -- r 读                                - 不写默认,只能读取

                     -- w 写                              - 没有新建一个,有写入并且自动清空原本数据,只能写

                     -- a 追加                           - 写入数据追加在文件最后,只能追加

                     -- r+  读写                        - 写入数据以追加方式加入,可读(最多)

                     -- w+ 写读                        - 先新建文件,写入数据然后可以读(少用)

                     -- a+                                 - 追加读 (和r+效果一样)

                     -- rb  二进制读                  - 用于网络数据传输

                     -- wb 二进制写                 - write(字符.encode(“utf-8”)),或在字符前面多个字符b

       二进制和字符串严格区分

              -rU                - 换行字符适配,在linux中\n换行,在window中\r\n换行

              -- 文件内容存取机制,插入数据,不会往后挤,而是覆盖掉

对文件有哪些操作?

       -- f.read(数字)       - 写入数字就读取几个字符,不写读全部,f.readable(),文件可读?

      - 读取所有的值,第一次读取从文件指针出读,读完指针已经指向文件最后,所以第二次读取无值,可以通过文件指针操作把指针指向起点

  -- f.readline()             - 读取文件一行数据

  -- f.writ(字符)             - 打开文件有w,a模式,才能写,f.writable文件可写?

  -- f.tell()                     - 打印指针当前位置,和seek方法一起使用

  -- f.seek(数字)          - 指针回到指定位置,f.seekable()判断指针可移动?fttp和设备文件名

  -- f.encoding             - 打印文件编码

  -- f.fileno()                 - 返回操作系统文件句柄编号

  -- f.name()                 - 打印文件名字

  -- .flush                     - 强制把缓冲数据写入磁盘,对数据的时效性要求高

  -- f.truncate()            - 不写默认清空,从头截断多少个字符,断点后面内容清空

怎么用flush写一个在屏幕上打印的进度条?

import sys,time
for i in range(20):
    sys.stdout.write('*')
    sys.stdout.flush()
    time.sleep(0.2)

如何更改文件内容?

  1. 先把文件加载到内存中,修改,最后写会磁盘,如果打开大文件,加载时间会有点长
  2. 打开文件,新建另外一个新文件,读,然后写,修改后写入新文件(不更改原文件,不需要加载到内存)

  如何用第二中方法更改文件内容?

      f =open(‘原文件’,’r’,encoding = ‘utf-8’)

      f_new = open(‘新文件’,’w’, encoding = ‘utf-8’)

      for line in f:

                  if “想要修改的地方” in line:

                         line = line.replace(“修改的内容”)

                  f_new.write(line)

    f.close

    f_new.close

posted @ 2017-04-05 14:00  梦_鱼  阅读(227)  评论(0编辑  收藏  举报