Python文件的操作(三)

一.二进制模式的读写操作

 1 # 二进制模式的读写操作
 2 with open(r'a.txt', 'rb') as f:
 3     print(f.read())
 4     print(f.read(6).decode('utf8'))
 5 '''
 6 .read()括号内可以放数字
 7 在t模式下表示字符个数
 8 在b模式下表示字节个数
 9 英文字符统一使用一个bytes来表示
10 中文字符统一使用三个bytes来表示
11 '''

二.文件内光标的移动

 1 # 文件内光标的移动
 2 '''
 3 控制文件内光标的移动,f.seek()
 4 f.seek(offset,whence)
 5   offset 表示偏移量 (始终是以字节为最小单位)
 6   正数从左往右移动
 7   负数从右往左移动
 8 whence表示模式
 9   0:以文件开头为参考系(支持tb两种模式)
10   1:只支持b模式 以当前位置为参考系
11   2:只支持b模式 以文件末尾为参考系
12 '''
13 with open(r'a.txt', 'rb') as f:
14     print(f.read(4).decode('utf8'))
15     print(f.tell())  # 查看光标移动了多少个字节
16     f.seek(3, 0)
17     print(f.read().decode('utf8'))

三.文件的内容修改

# 方式1 覆盖
with open(r'a.txt', 'r', encoding='utf8') as f:
    date = f.read()
    print(type(date))
with open(r'a.txt', 'w', encoding='utf8') as f1:
    new_date = date.replace('tony', 'jason')
    f1.write(new_date)
# 方式二 新建
import os
with open('c.txt', mode='rt', encoding='utf-8') as read_f, \
        open('c.txt.swap', mode='wt', encoding='utf-8') as write_f:
    for line in read_f:
        write_f.write(line.replace('SB', 'kevin'))
os.remove('c.txt')  # 删除原文件
os.rename('c.txt.swap', 'c.txt')

 

 

 四.函数的引入

l = [11, 12, 33, 44, 55, 66, 77, 88]


def my_len():
    n = 0
    for i in l:
        n += 1
    print(n)


my_len()
'''
1.我们现在所写的代码无法做到精简,需要用就必须重复写模仿冷的内部源码
2.我们现在所写的代码兼容性(无法解决)
3.我们现在所写的代码没有返回值
4.函数就类似于工具 提前定义好之后就可以反复使用
'''

五.函数的语法结构

# 函数语法结构
def 函数名(参数1,参数2):
    '''函数注释'''
    函数体代码
    return 返回值

1.def(必须的)

是定义函数的关键字

2 函数名(必须的)

是函数的名字 相当于变量名

函数名的命名规范与风格要遵循变量名的命名规则

3.参数1,参数2(可选的)

参数可以没有也可以有很多个,用来表示函数在使用前需要满足的一些条件

4.函数注释(可选的)

类似于产品说明书

主要用于介绍函数功能,使用参数,及其他情况。

5.函数体代码(必须写)

函数核心代码逻辑(重要)

6.return返回值(可选的)

 使用函数之后反馈给使用者的结果,可以有也可以没有。

六.函数的定义与调用

1.函数必须先定义后调用,顺序一定不能乱

2.函数在定义阶段只检测语法不执行代码

3.函数在调用阶段才会执行函数体内的代码

如何调用函数

   函数名后加括号 如果函数在定义阶段有参数则在调用阶段也需要给参数

原理剖析:1.在内存空间申请一块空间存储函数体代码

               2.将函数体代码所在的空间地址绑定给函数名

               3.函数名加括号则会执行函数体代码

七.函数的分类

1.内置函数

Python解释器自带

2.自定义函数

2.1 无参函数

在函数定义阶段括号内没有写参数(变量名)

2.2 有参函数

在函数定义阶段括号内写了参数(变量名)

2.3 空函数

函数体代码为空,一般用pass,或者...补全代码,并不具备某种特定含义。有时候会用来占位。

虽然空函数本身没有含义 但是空函数可以提前规定好编写代码的思路
"""
def run():
    pass
def fight():
    pass
def talk():
    pass

 

posted @ 2021-11-12 22:26  bug俱乐部  阅读(45)  评论(0)    收藏  举报