zoukankan      html  css  js  c++  java
  • 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中 换行,在window中 换行

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

    对文件有哪些操作?

           -- 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

  • 相关阅读:
    小程序 视频
    b161: NOIP2007 4.Hanoi双塔问题
    命名规则、.gitignore、freopen()
    c++学习记录(九)
    c++学习笔记(八)
    2020面向对象程序设计寒假作业2
    c++学习记录(七)
    c++学习记录(六)
    c+学习记录(五)
    c++学习记录(四)
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/6668420.html
Copyright © 2011-2022 走看看