zoukankan      html  css  js  c++  java
  • Python 文件修改-函数介绍

    上节课复习:
    1.字符编码
    1.1 如何解决乱码问题:
    字符存取使用的编码标准不一致
    1.2 文件头
    在文件的首行写入文件头,用于控制Python解释器读取py文件内容时使用的编码
    #coding:文件存入硬盘时使用的编码标准
    ps:如果不指定文件头
    Python2默认使用ASCII
    Python3默认使用UTF-8
    1.3 关于字符串类型(只在运行Python程序的第三个阶段才有字符串的概念)编码的问题
    Python3中的字符串类型str/字节串bytes类型:
    str======>Unicode
    x="上" #把"上"存成Unicode格式的二进制
    bytes:
    res=x.encode("GBK") #Unicode ------编码-------> gbk

    res.decode("GBK") #gbk--------解码--------->Unicode

    Python2中的字符串类型str/Unicode类型:
    str===>文件头指定的编码格式存放的

    #coding:GBK
    x="上" #把"上"存成GBK格式二进制

    Unicode
    #coding:gbk
    x=u"上" #把"上"存成Unicode格式二进制

    2.文件处理
    什么是文件?
    1.文件是操作系统提供给用户/应用程序用于间接地操作硬盘的抽象的单位
    为何要用文件?
    1.为了将应用程序内存的数据永久保存到硬盘
    如何用文件?
    步骤:
    1.打开文件
    f = open(r'文件路径',mode='rt',encoding='utf-8')
    2.读/写操作
    f.read()
    f.write()
    3.关闭文件
    f.close()
    控制操作文件内容的两种模式(不能单独使用,必须与rwa连用)
    t: 读写都是以字符串为单位(默认的),必须制定encoding参数
    b: 读写都是以bytes类型为单位的,必须不指定encoding参数
    打开文件的三种模式
    r:只读模式
    w:只写模式
    a:只追加写模式


    .replace() 方法用于在字符串中用一些字符替换成另一些字符,或替换一个与正则表达式匹配的子串。


    今日内容:
    1.控制文件内指针的移动
    f.seek()
    f.seek(offset,whence)有两个参数:
    offset: 代表控制指针移动的字节数
    whence:代表参照什么位置进行移动
    whence = 0:参照文件开头(默认的),特殊???,可以在t和b模式下使用
    whence = 1:参照当前所在的位置,必须在b模式下用
    whence = 2:参照文件末尾,必须在b模式下用
    f.tell() 查看几个字节
    f.read(n)
    文件内指针移动, 只有t模式下的read(n), n代表的字符的个数
    除此以外文件内指针的移动都是以字节为单位
    f,truncate(n) 截断文件
    2.修改文件的两种方式
    方式1:
    1.将文件内容由硬盘读到内存
    2.在内存中完成修改
    3.将内存中修改后的结果覆盖写回硬盘
    优点:在文件修改的过程中硬盘上始终一份数据
    缺点:占用内存过多,不适用于大文件

    方式2:
    1.以读的方式打开源文件,以写的方式打开一个临时文件
    2.从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
    3.删掉源文件,将临时文件重命名为源文件
    优点:同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
    缺点:在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多地占用硬盘
    3.函数相关
    函数的定义
    1.什么是函数
    函数就是具备某一功能的工具
    2.为什么要用函数
    2.1 程序的组织
    3.如何用函数
    函数的使用必须遵循的原则:先定义,后调用
    修理工事先准备工具的过程即函数的定义
    修理工遇到应用场景拿来工具就用即函数的调用

    def:定义函数的关键字
    函数名:就相当于一个变量名,指向函数的内存地址,
    注意:函数的内存地址加()就可以触发函数体代码的执行


    函数的调用:
    函数的使用分为两个阶段:
    定义阶段: 只检测语法,不执行代码
    调用阶段: 运行函数体代码
    语法:
    def 函数名(参数1,参数2,....):
    '''
    文档注释
    :param 参数1:
    :param 参数2:
    :return:
    '''
    ......
    return 返回值

    函数的返回值:
    return : 函数体代码块运行的成果
    函数的参数:
    参数就是函数的调用者为函数体代码传值的媒介,在Python中函数的参数无需声明类型
    定义时无参数,意味着调用时也无需传入参数

    定义无参函数:
    当函数体的代码逻辑不依赖任何传入的值就能执行,就不需要定义参数
    定义有参函数:
    当函数体的代码逻辑依赖于外部调用者传入的值才能执行,必须定义参数用来接收外部传入的值

  • 相关阅读:
    js函数柯理化
    Promise异步编程解决方案
    set和map结构,class类
    原创:用node.js搭建本地服务模拟接口访问实现数据模拟
    原创:微信小程序如何使用自定义组件
    原创:微信小程序开发要点总结
    Nodejs CMS——基于 NestJS/NuxtJS 的完整开源项目
    浅谈js对象之数据属性、访问器属性、Object.defineProperty方法
    Promise初步详解(resolve,reject,catch)
    原生js面向对象实现简单轮播
  • 原文地址:https://www.cnblogs.com/earon/p/9378307.html
Copyright © 2011-2022 走看看