python学习Day14


Day 14

今日内容概要

  • 文件内光标的移动
  • 文件数据修改
  • 函数简单介绍

今日内容详细

1.文件内光标的移动

补充知识:

1.在文本模式下read(2) 2代表读取几个字符
  with open(r'a.txt','r',encoding='utf8')as f:
      data = f.read(2)
      print(data)
2.在二进制模式下read(3) 3代表读取几个字节
   '英文1字节  中文3字节'
  with open(r'a.txt','rb')as f:
      data = f.read(3)#打印data会出现2进制的字节
      print(data.decode('utf8'))#用utf8解码二进制字节
   #当文本中都是中文,把读取的字节解码时不是3的倍数时会报错
3.tell()获取光标目前移动了的字节数#不是字符数
  with open(r'a.txt','r',encoding='utf8')as f:
      data = f.read(3)#当全是汉字文件时,读取3个字符
      print(data)#张三说
      print(f.tell())#9 因为1个汉字是3字符
#代码控制光标移动
 seek(offset,whence)
    offset:控制光标移动的位移量(字节)
    whence:移动的模式
            0 基于文件开头移动多少字节
            1 基于光标当前所在位置移动多少字节
            2 基于文件末尾移动多少字节
         'ps:1和2只能在二进制模式下使用 0无所谓'
 eg: 张三说你在讲什么 
  with open(r'a.txt','r',encoding='utf8')as f:
     print(f.read(1))#张  打印该文本读取1个字符
     f.seek(6,0)#光标移动6个字节,从文件开头开始移动
     print(f.read())#说你在讲什么  打印光标后的所有文本

2.文件数据修改

"""
机械硬盘存储数据的原理:(与固态硬盘不一样,固态硬盘是算法)
      1.数据的修改 其实是覆盖在原来的数据上
      2.数据的删除 其实是从占有态变为自由态,数据还能恢复
"""
1.代码修改文件内容的方式:
    1)覆盖写
       先读取文件内容到内存,在内存中完成修改,之后w模式打开该文件写入
    2)重命名
       先读取文件内容到内存,在内存中完成修改,之后保存到另一个文件中,再将原文件删除并将新的文件重命名为原文件
   
#覆盖写
with open(r'a.txt','r',encoding='utf8')as f:
    data = f.read()#将文本文件中的内容赋值给data
new_data = data.replace('张三','李四')#将文本文件中的张三替换成李四并赋值给新的变量名
with open(r'a.txt','w',encoding='utf8')as f1:
    f1.write(new_data)#在f1文本文件中写入新赋值的变量名内容
   """
   优点:是覆盖的模式去修改,硬盘只占用一块空间
   缺点:当数据较大时会造成内存溢出
   """
#重命名
  import os
  with open(r'a.txt','r',encoding='utf8')as f1,open(r'aa.txt','w',encoding='utf8')as f2:
     for i in f1:
         f2.write(i.replace('张三', '李四'))
  os.remove('a.txt')  # 删除文件
  os.rename('aa.txt', 'a.txt')  # 重命名文件
    """
    优点:不会造成内存溢出
    缺点:可能临时需要占用硬盘两个地方的空间
    """

3.函数简单介绍

eg:(不使用len()完成列表数据值个数统计)
    l1 = [1,2,3,4,5]
1.循环统计
    count = 0
    for i in l1
        count += 1
    print(count)
2.自定义函数
    def my_len():
       count = 0
       for i in l1:
           count += 1
       print(count)
    
"""
1.循环结构:
   在相同的位置反复执行相同的代码
2.函数:
   在不同的位置反复执行相同的代码
"""

len() 内置函数
my_len() 自定义函数

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/272453.html

(0)
上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐

发表回复

登录后才能评论