• 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的38-41讲


    # -*- coding: utf-8 -*-
    #嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=10211084839195730432#page=25 中的38-41讲
    # 文件
    # 文件是存储在外部介质上的数据或信息的集合
    # 文件是有序的数据序列
    # 常用的编码
    # ASCII码是标准化字符集
    # 7个二进制位编码
    # 表示128个字符 # ord() 将字符转化为ASCII码, chr() 将ASCII码转化为字符
    #
    # Unicode :为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言跨平台的需求。
    # 有65536个字符的编码空间
    # 它是十六进制的编码方式
    #
    # UTF-8 : 为一种可变长度的Unicode编码,它是一种多字节的编码体系
    # 英文对应Unicode的单字节,中,日,韩文对应Unicode的三字节
    # 可以用一到四个字节的不同长度来表示
    #
    # Python中字符串类型是未编码的类型,我们可以用encode()来进行编码操作,使用decode()来进行解码操作
    #
    # GBK编码 :全称为《汉字内码扩展规范》
    # 双字节编码
    #
    # 文件数据按其组织形式的不同可分为文本文件和二进制文件
    # 文本文件:以ASCII码方式存储的文件,英文,数字等字符存储在ASCII码上
    # 文本文件是基于字符定长的ASCII码文件
    # Python使用常规换行符( )表示换行
    # 二进制文件
    # 广义二进制文件:文件在外部设备的存放形式为二进制的文件
    # 狭义二进制文件:除文本文件外的所有文件
    # 二进制文件包括照片,音乐,视频,计算机程序等
    # 二进制文件优点:
    # 更加节省空间
    # 采用二进制无格式存储
    # 二进制数据表示更为精确,不会造成有效位的丢失。
    # 二进制文件编码是变长的,灵活利用率更高
    # 不同的二进制文件解码方式不同
    #
    # 文件操作:
    # 读取
    # 写入
    # 定位
    # 计算,追加等
    #
    # 打开文件
    # open()
    # <variable> = open(<name>,<mode>)
    # mode形式:r:只读,如果文件不存在,则输出错误
    # w: 只写,如果文件不存在,则自动创建文件
    # a: 附加到文件末尾
    # rb:只读二进制文件,如果文件不存在,则输出错误
    # wb:只写二进制文件,如果文件不存在,则自动创建文件
    # ab: 附加到二进制文件末尾
    # r+ :读写
    # read() 返回值为包含整个文件内容的一个字符串
    # readline() 返回值为文件下一行内容的一个字符串
    # readlines() 返回值为整个文件内容的列表,每项是以换行符为结尾的一行字符串。
    # write() 把含有文本数据或二进制数据块的字符串定稿到文本中
    # writelines() 针对列表操作,接受一个字符串列表作为参数,将它们写入文件,并且行结束符不会被自动加入
    #
    #infle = open(r"C:UsersAdminDesktop宋冬野 - 斑马,斑马.flac",'rb') #文件路径要根据实际情况填列
    #print(infle)
    #infile = open(r"C:UsersAdminDesktop123.txt",'r')
    #for i in range(10):
    #    line = infile.readline()
    #    print(line[:-1])
    #>>>outfile = open(r'C:UsersAdminDesktop123.txt','w') #文件路径要根据实际情况填列
    #>>>outfile.writelines(["Hello",' ','world']) #写入内容后原文件内容会被清除
    #>>>outfile.close()
    #>>>infile = open(r'C:UsersAdminDesktop123.txt','r') #文件路径要根据实际情况填列
    #>>>infile.read()
    #'Hello world'
    #
    # 文件遍历:最常见的文件处理方法,如拷贝,根据数据文件定义行走路径,将文件由一种编码转换成另一种编码。
    # 遍历文件模板:
    # 通用代码框架:
    #file = open(r'文件路径','r')
    #for line in file.readlines():
    #    编写程序处理一行文件内容
    #file.close()
    # 简化代码框架
    #file = open(r'文件路径','r')
    #for line in file:
    #  编写程序处理一行文件内容
    #file.close()
    #
    # 文件拷贝代码
    """
    def main():
      f1 = input("请输入一个需要拷贝的文件名称: ").strip()
      f2 = input("请输入一个拷贝后的目标文件名称: ").strip()
      infile = open(f1,'r')
      outfile = open(f2,'w')
      countLines = countChars = 0
      for line in infile:
        countLines += 1
        countChars += len(line)
        outfile.write(line)
      print(countLines, "lines and ", countChars, "chars copied.")

      infile.close()
      outfile.close()

    main()
    """
    """
    data.txt
    300,0,144,1,0,0 #元素1(第一列)路径前进像素数
    300,0,144,0,1,0 #元素2(第二列)转动方向,0为左,1为右
    300,0,144,0,0,1 #元素3(第三列)转动角度
    300,0,144,1,1,0 #元素3(最后) 绘制颜色的RGB值
    300,0,108,0,1,1
    184,0,72,1,0,1
    184,0,72,0,0,0
    184,0,72,0,0,0
    184,0,72,0,0,0
    184,1,72,0,0,0
    184,1,72,0,0,0
    184,1,72,0,0,0
    184,1,72,0,0,0
    184,1,72,0,0,0
    """
    # 根据data.txt文件中的数据在窗口中进行动态路径绘制

    import turtle

    def main():
      turtle.title("数据驱动的动态路径绘制")
      turtle.setup(800,600,0,0)
      pen = turtle.Turtle()
      pen.color("red")
      pen.width(5)
      pen.shape("turtle")
      pen.speed(5)
      result = []
      file = open(r"C:UsersfengboDesktopdata.txt","r") #文件路径要根据实际情况填列
      for line in file:
        print(type(line)) #查看line的属性
        print(line.split(',')) #查看分割后line的存储信息
        result.append(list(map(float,line.split(','))))
      print(result)

      print(len(result))
      for i in range(len(result)):
        pen.color((result[i][3],result[i][4],result[i][5]))
        pen.fd(result[i][0])
        if result[i][1]:
          pen.rt(result[i][2])
        else:
          pen.lt(result[i][2])
      pen.goto(0, 0)

    if __name__ == '__main__':
      main()

    # 文件信息合并程序
    ftele1 = open(r'C:UsersfengboDesktop电话1106.txt','rb')
    ftele2 = open(r'C:UsersfengboDesktop邮箱1106.txt','rb')

    ftele1.readline() #跳过第一行
    ftele2.readline() #跳过第一行
    lines1 = ftele1.readlines()
    lines2 = ftele2.readlines()

    list1_name = []
    list2_name = []
    list1_tele = []
    list2_email = []

    for line in lines1: #获取第一个文本中的姓名和电话信息
      elements = line.split()
      list1_name.append(str(elements[0].decode('gbk')))
      list1_tele.append(str(elements[1].decode('gbk')))

    for line in lines2:
      elements = line.split()
      list2_name.append(str(elements[0].decode('gbk')))
      list2_email.append(str(elements[1].decode('gbk')))

    #按索引方式遍历姓名列表1
    for i in range(len(list1_name)):
      s = ''
      if list1_name[i] in list2_name:
        j = list2_name.index(list1_name[i]) #找到姓名,列表1对应列表2中的姓名
        s = ' '.join([list1_name[i], list1_tele, list2_email[j]])
        s += ' '
      else:
        s = ' '.join([list1_name[i], list1_tele, str(' ----- ')])
        s += ' '
      lines.append(s)

    #处理姓名列表2中剩余的姓名
    for i in range(len(list2_name)):
      s = ''
      if list2_name[i] not in list1_name:
        s = ' '.join([list2_name[i], str(' ----- '), list2_email[i]])
        s += ' '
      lines.append(s)

    ftele3 = open(r'C:UsersfengboDesktop电话邮箱1106.txt','w')
    ftele3.write(lines)

    ftele3.close()
    ftele1.close()
    ftele2.close()
    print("个人信息簿合并完成。")      #需要学完正则表达式后再来回顾

  • 相关阅读:
    你的想像力智商有多高?
    Visual FoxPro 9.0 发布
    Google的社会网络
    女人永远是对的
    如何保存ICQ聊天历史
    7 30 个人赛
    Linux下利用文件描述符恢复的成功失败实验
    蓝鲸社区版部署
    Oracle 10.2.0.5升级至11.2.0.4
    手动创建Oracle实例
  • 原文地址:https://www.cnblogs.com/fengbo1113/p/7795513.html
Copyright © 2020-2023  润新知