第八天

Posted abrahamchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八天相关的知识,希望对你有一定的参考价值。

今日所得

  文件操作模式的补充

  文件光标的移动控制

  截断文件

  修改文件

  函数的简单介绍

 

文件操作模式的补充

"""
r
w
a
将上面的三个模式称为纯净模式
r+
w+
a+
"""
with open(rtest,mode=r+,encoding=utf-8) as f:
    print(f.readable())
    print(f.writable())
    print(f.readline())  # ‘r+‘模式比起‘r‘模式不仅可以读,还可以写入
    f.write(hehehe)


with open(rtest,mode=w+,encoding=utf-8) as f:
    print(f.readable())
    print(f.writable())
    print(f.readline())  # ‘w+‘模式可读可写,但还是会清空文件再写入,没有文件时,会创建一个
    f.write(hehehe)


with open(rtest,mode=r+b) as f:
    print(f.readable())
    print(f.writable())  # b模式是以二进制的方式读取的,要想变成我们读的懂得文字需要用.decode来解码
    res = f.read()
    # print(res.decode(‘utf-8‘))
    res1 = str(res,encoding=utf-8)
    print(res1)

 

 

文件光标的移动控制

  

"""
f.seek(offset,whence)
offset:相对偏移量  光标移动的位数
whence:
    0:参照文件的开头   t和b都可以使用
    1:参照光标所在的当前位置  只能在b模式下用
    2:参照文件的末尾  只能在b模式下使用
"""

with open(rtest,rt,encoding=utf-8) as f:
    print(f.read(1))
    # f.seek(6,0)  # seek移动都是字节数
    # f.seek(4,0)  # seek移动都是字节数
    # print(f.read(1))  # read读取的是字符数
    f.seek(0,0)
    print(f.read(1))
    f.seek(0, 0)
    print(f.read(1))
    f.seek(6,0)
    print(f.read())


with open(rtest,rb) as f:
    print(f.read(3).decode(utf-8))
    f.seek(0,0)
    print(f.read(3).decode(utf-8))
    f.seek(7,0)
    print(f.read(1).decode(utf-8))
    # f.seek(6,0)  # seek移动都是字节数
    # f.seek(4,0)  # seek移动都是字节数


with open(rtest,r+,encoding=utf-8) as f:
    f.seek(3,0)
    f.write()  # 写入的字符不会插到俩个字符中间,只会覆盖当前位置的字符


with open(rtest,rb) as f:
    print(f.read())
    f.seek(-4,2)  # 从后往前读
    print(f.read().decode(utf-8))

 

 

截断文件

with open(rtest,a,encoding=utf-8) as f:
    f.truncate(6)  # 接收的字节的长度 整型
    # 保留0~6字节数 后面的全部删除(截断)

 

 

修改文件

# 修改文件1
# 先将数据由硬盘读到内存(读文件)
# 在内存中完成修改(字符串的替换)
# 再覆盖原来的内容(写文件)
with open(rtest02.txt,r,encoding=utf-8) as f:
    data = f.read()
    print(data)
    print(type(data))

with open(rtest02.txt,w,encoding=utf-8) as f:
    res = data.replace(egon,jason)
    print(data)
    f.write(res)

"""
优点:任意时间硬盘上只有一个文件 不会占用过多硬盘空间
缺点:当文件过大的情况下,可能会造成内存溢出
"""



# 文件修改方式2
# 创建一个新文件
# 循环读取老文件内容到内存进行修改  将修改好的内容写到新文件中
# 将老文件删除  将新文件的名字改成老文件名
import os


with open(rtest02.txt,r,encoding=utf-8) as read_f,        open(rtest02.swap,a,encoding=utf-8) as write_f:
    for line in read_f:
        new_line = line.replace(jason,egon)
        write_f.write(new_line)
os.remove(test02.txt)
os.rename(test02.swap,test02.txt)


"""
优点:内存中始终只有一行内容 不占内存
缺点:再某一时刻硬盘上会同时存在两个文件

"""

 

 

函数的简单介绍

"""
可以通过变量名找到变量对应的值
可以通过函数名+括号 找到函数体所对应的代码并执行
"""


# 函数名的命名规则跟变量名一模一样

# 函数就是工具,并且函数必须先定义后调用(函数名+括号)

# 函数体代码定义截断只检测语法 不执行代码


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

 

 

以上是关于第八天的主要内容,如果未能解决你的问题,请参考以下文章

python第八天

Alpha第八天

每日算法&面试题,大厂特训二十八天——第八天(递归|回溯)

python 第八天

Sprint第二个冲刺(第八天)

学习linux第八天