今日总结

  • 文件内光标的移动
  • 文件数据修改
  • 函数简介
  • 函数的语法结构
  • 函数的返回值
  • 函数的参数

内容详细

文件内光标的移动

1.read在文本模式下,括号内的数字表示的是读取指定的字符个数,但是在二进制模式下,括号内的数字表示的是读取指定的字节数
2.unicode所有的字符都是用2bytes来表示
3.utf8中中文是用3bytes来表示,英文用1bytes表示
如:with open(r'a.txt', 'rb') as f:
    	print(f.read(9).decode('utf8'))
        print(f.read(1).decode('utf8'))
# 控制光标移动
#seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数
    seek(offset,whence)
        offset:控制移动的字节数
        whence:控制模式
            0:相对于文件开头(让光标先移动到文件开头)
                支持文本模式和二进制模式
            1:相对于当前位置(让光标先停留在当前位置)
                只支持二进制模式
            2:相对于文件结尾(让光标先移动到文件末尾)
                只支持二进制模式
   # 一般控制光标的话,我们是先看它括号里右边的数字,确认是在哪种控制模式下,
# 然后再去看括号里左边的数字来进行移动多少个字节
如:with open(r'a.txt', 'rb') as f:
   		 print(f.read(3).decode('utf8'))
    # f.seek(3,1)代表的就是说在当前位置上,往后移动三个字节
    # f.seek(-3,2)表示的是先移动到文件末尾,然后再往前移动三个字节
    # print(f.tell())表示的是获取光标是处于文件开头的字节数

文件的数据修改

# 文件数据其实是在硬盘上刻死的,不能修改,只能就是说将之前的数据给删掉,然后重新再刻一个新的,简单点就是将文件内容一次性全部读入内存中,然后在内存中修改完了之后再覆盖在源文件之上的
with open('b.txt', 'r', encoding='utf-8') as read_f, \
        open('.b.txt.swap', 'w', encoding='utf-8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('jason', 'jerry'))
os.remove('b.txt')  # 删除文件
os.rename('.b.txt.swap', 'b.txt')  # 重命名文件
以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,
# 删掉原文件,将临时文件重命名原文件名(狸猫换太子)
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份

函数简介

# 函数就是在不同的地方反复执行相同的代码,就像个工具一样,提前制定好之后就可以反复的使用,与循环很像,但是跟循环又有点差别,差别就是循环是在相同的地方反复执行相同的代码,而函数是在不同的地方反复执行相同的代码
python解释器中有很多提前给我们写好的函数,像这种函数我们称之为内置函数,我们自己写的函数称之为自定义函数

函数的语法结构

1.def 2.函数名 3.(4.参数)5.:
    6.'''函数的注释'''
    7.函数体代码
    8.return 返回值
# 1.def是定义函数的关键字
# 2.函数名就像变量名一样,一定要见名知意,指代的是函数体代码,命名跟变量名一样
# 3.括号,定义函数的时候,函数名后面肯定要先写括号
# 4.参数,可以写单个或者多个,或者不写,主要就是使用函数的时候,给函数内部传递的数据
# 5.冒号,定义函数也需要有缩进的代码块
# 6.函数的注释,主要是用于结束函数的主要功能跟使用方法等说明性文字
# 7.函数体代码,函数的核心功能,也是要编写的核心
# 8.return(返回值),后面跟什么,执行完函数之后就会返回什么