• 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

  • 相关阅读:
    hihoCoder #1062 : 最近公共祖先·一
    hihoCoder #1050 : 树中的最长路
    hihoCoder #1049 : 后序遍历
    108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
    107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II
    106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树
    105 Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树
    104 Maximum Depth of Binary Tree 二叉树的最大深度
    102 Binary Tree Level Order Traversal 二叉树的层次遍历
    101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/6668420.html
Copyright © 2020-2023  润新知