• 22 Mar 18 补充数据类型+字符编码+文件处理


    补充:

    元组:相当于不可变的列表

    注意: t=(1,'a',[1,2,]), 列表中的元素可以变,id不变
     
    注意:集合里的元素是不可变的,集合时可变的,有多个值,集合不可以当集合的元素
     
    作业讲解:
    s='hello alex alex say hello sb sb'
    words=s.split()
    dic={}

    for word in words: #word='alex'
       
    dic.setdefault(word,words.count(word)) #dic={'hello':2,'alex':2}
    print(dic)

    换行:

    windows平台: (两个字符)换行, 为跳到行首, 为跳至下一行

    linux/ mac平台: (一个字符)为换行

    python:用 表换行,python帮忙转化成不同平台

    数据类型总结

    http://www.cnblogs.com/linhaifeng/articles/7133357.html

    字符编码

    A知识储备:

    文本编辑器存原理
    结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果
            跟编写一个普通的文本文件是没有任何区别,
            只有把py程序交给python解释并且在运行的第三个阶段才有了
            语言意义

    文本编辑器读原理


    B、什么是字符编码
        人类的字符----》翻译-------》数字
        翻译的过程必须遵循一个标准:字符与数字一一对应的关系
        这个标准称之为字符编码表

        ASCII #起始阶段,满足英文和符号
        8bit=1bytes,一个英文字符占用1字节

        GBK
        16bit=2bytes ,2个字节表示一个中文字符,1字节表示一个英文字符

        unicode(内存中固定的编码):
        16bit=2bytes,2个字节表示一个字符
    #一方面兼容万国,另一方面提供各国和unicode之间的转化
    #现阶段还必须使用unicode以兼容硬盘上的用各国自创的编码语言,以后,当硬盘上的程序统一到utf-8上时,内存也有可能用utf-8编码

        utf-8:Unicode Transformation Format (硬盘)
            1字节表示一个英文字符,3bytes表示一个中文字符

        保证不乱吗的核心就是:
        文件是以什么编码存的,就必须以该读取
        强调:我们能控制的只是存到硬盘上的编码

        python3解释器:默认utf-8编码
        python2解释器:默认ascii编码 (当时没有utf-8)

        文件头的作用:#coding:utf-8 是告诉python解释器,用我指定的字符编码

    C、执行python程序第三个阶段发生的事
        会识别python语法,定义的字符串类型又涉及到字符编码的概念
        x='上' #x=str('上')
        python2:
            字符串分为两种形式:str和unicode
                x='上' #python2的str类型会按照文件头指定的编码来存‘上’

        python3:
            str:所有字符串都用unicode存


    D、转换
        unicode---编码encode--->gbk
        gbk------->解码decode---》unicode
     

    文件处理

    1. 打开文件的字符编码
    默认的打开文件的编码是:当前操作系统默认的编码,wingbklinuxutf-8
    f=open('a.txt',mode='r',encoding='utf-8')  #应用程序如果用utf-8编写,encoding后跟utf-8,否侧windows系统默认用gbk打开,会乱码。
    print(f.read())
    f.close()
    1. 文件处理的基本形式

    #1 打开文件‘

    # f=open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码'#windows 平台默认gbklinuxmac平台默认utf-8
    #打开文件占两方面的资源(操作系统和应用程序),如果数据的传输是水的话,f相当于水舀(由操作系统生成交给应用程序)
    #open只能打开本地文件
    f=open(r'a.txt',mode='r',encoding=’utf-8’)  #r refer to rawstring
    #当文件在同一文件夹时,文件路径可以简写
    #mode 默认是rt(只读txt文件),当mode=’w’时,默认wt mode=’a’默认at
    print(f)

    #2 读/写

    print(f.read())       #读出所有, 
    print(f.readable())  #是否可读
    print(f.readline(), end=’’)  #读一行
     
    with open('ab.txt',encoding='utf-8') as f:
        for line in f:#推荐用f,不用f.realines(),因为f是读一行进内存,后者是读所有进内存
            print(line,end='')
     
    for line in f.readlines(): #循环文件不要使用该方式,因为在文件过大的情况下有可能会撑爆内存
       
    print(line,end='')

    print(f.readlines()) #以列表的形式读出所有数据  ['as ', 'as ', 'as ']

    #当文件不存在时报错

    **注意光标的移动,连续两次realines()时,第二次realines()读不出值。

    #3关闭文件

    f.close() #回收操作系统的资源

    **读写之后一定要回收操作系统的资源, f.close()执行后,应用程序的资源并没有回收,该部分资源由python自动回收。如果有with…(见后面),则不用执行f.close()。不能在f.close()前用del f,否则操作系统找不到f,报错。

    #4 用with管理

    ##with可以帮忙管理文件。当用with打开文件时,不需再输入f.close()。

    with open(r'ab.txt',mode='r') as f:
    print('===>')
    print(f.read())

    #with可以管理多个文件

    with open(r'a1.txt',mode='r') as f1,open('a2.txt',mode='r') as f2:
    print('===>')
    print(f1.read())
    print(f2.read())

    以上形式相当于:

    f1=open(r'a1.txt',mode='r')
    f2=open(r'a2.txt',mode='r')

    f1.close()

    f2.close()

    #5 w模式

    #w:只写模式
    #
    注意
    # 1
    、当文件存在时,清空
    # 2
    、当文件不存在时,创建空文档
    f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
    f.write('第一行 ')  #注意光标,如果没有 ,接着写
    f.write('第二行 ')
    f.writelines(['111111 ','222222 ','333333 '])
    f.write('aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ')
    f.close()

    #6追加模式a (一种特殊的写模式)

    #a:只追加写模式, 光标移动道文件末尾,日志文件一般用a
    #
    注意:
    #
    在文件不存在时,创建空文件
    #
    在文件存在时,光标直接跑到文件末尾
    f=open('access.log',mode='a',encoding='utf-8')
    print(f.writable())
    f.readlines() #报错
    f.write('5555555555555 ')

    f.close()
  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/zhangyaqian/p/py20180322.html
Copyright © 2020-2023  润新知