ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python学习Day14

2022-07-01 09:06:41  阅读:144  来源: 互联网

标签:学习 字节 python utf8 Day14 read print txt data


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() 自定义函数

标签:学习,字节,python,utf8,Day14,read,print,txt,data
来源: https://www.cnblogs.com/Oreoxx/p/16433307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有