• python数据类型、字符编码、文件处理


    介绍:

    1.什么是数据?

    例:x=10,10是我们要存储的数据

    2.为何数据要分不同的类型?

    数据是用来表示状态的,不同的状态用不同的类型的数据去表示

    1.数据类型

      1.数字(整形,长整形,浮点型,复数)

    整形int
    #一:基本使用
    1 用途
    用途:年龄,等级,qq号等
    2 定义方式
    age=18 #age=int(18)
    3 常用操作+内置的方法
    + - * / 等
    
    
    
     1 #二:该类型总结
     2 1 存一个值or存多个值
     3     只能存一个值
     4 2 没有顺序(只能存一个值)
     5 3 可变or不可变(值改变id不变叫可变类型)
     6     !!!不可变:值变,id就变。不可变==可hash
     7   例:x=11
     8     print(id(x))
     9     x=12
    10     print(id(x))
    11   不可变==可hash
    12     print(hash11)可以正常hash
    13 补充:列表(值改了但是id不变为可变类型)为可变类型==不可hash
    14   例l=[1,2,3]
    15   print(id(l))
    16   1[0]=222
    17   print(id(l))
    浮点型float
    1 用途
    身高,体重,工资,体制参数等
    2 定义方式
    salary=3.1 #salary=float(3.1)
    3 常用操作+内置的方法
    
    #二:该类型总结
    1 存一个值or存多个值
        只能存一个值
    2 没有顺序,只能存一个值
    3 可变or不可变
        !!!不可变:值变,id就变。不可变==可hash
    

     了解:

    长整型long
    在python2中有,python3中没有 long(表示数字的长度过长) 例: x=3L print(type(x))
    y=123123123123123 print(type(y))

     复数complex

    x=1+2j(j这个地方为什么定义其他的字符报错)
    1代表实数
    2代表虚数
    print(x.real)查看实数
    print(x.imag)查看虚数
    print(type(x))

     

    字符串floor

    字符串
    1 #一:基本使用
    2 1 用途
    3 姓名,性别,住址等描述性数据
    4 2 定义方式
    5 在单引号双引号三引号内,由一串字符组成
    6 例:
    7 msg='hello world'
    8 这个字符串中的单个字符可以取出来,单个取出来的也叫字符串 
     1 #优先掌握的操作:
     2 #1、按索引取值(正向取+反向取) :只能取,不能修改
     3 print(msg[0],type(msg[0]))取出hello world的第一个值
     4 print(msg[-1])取出最后一个值
     5 不可以改字符串中的值
     6 #2、切片(顾头不顾尾,步长)
     7 print(msg[0:3])#>=0<3
     8 print(msg[0:5])#>=0<5
     9 print(msg[0:7:1])#>=0<7
    10 print(msg[0:7:2])#>=0<7 #隔一个取一个(顾头不顾尾)
    11 print(msg[:])从开头到结尾
    12 print(msg[6:1])指的是从6开头到1,这没有可以取的东西了
    13 print(msg[6:1:-1])这个首先是倒序取值,这样的就是指的倒着从6到1,就可以取出来了
    14 print(msg[-1:0:-1])倒着取,这个0可以不加
    15 #3、长度len
    16 按着字符串中的一个个字符算的
    17 print(msg.__len__())python内部调用的功能
    18 print(len(msg))#就是msg.__len__()
    19 #4、成员运算in和not in
    20 msg='hello world'
    21 print(’llo’ in msg)#判断这个llo子字符串在不在这个msg字符串中
    22 print(llo not in msg)#这里的not in是取反的意思
    23 #5、移除空白strip
    24 password='  alex3714 '#如果多输入几个空格
    25 print(password.strip())#取出多余的空格
    26 password=input('>>>:').strip#可以这样写,input接收用户输入的内容都存为字符串
    27 password='alex 3714   '
    28 print(password.strip())
    29 #6、切分split
    30 user_info='root:x:0:0:/root:/bin/bash'
    31 user_info.split(self,sep(sep指的是分隔符),maxsplit这里面有三个参数,现在可以忽略掉self这个参数,只有两个)
    32 res=user_info.split(':')
    33 print(res[0])#这样可以取出root这个值
    34 
    35 file_path='c:\a\b\c\d.txt'#双\指的是windows中的目录
    36 print(file_path.split('\',1))这个取出的是以第一个\为分隔符
    37 print(file_path.rsplit('\',1))这个是从右边以第一个\为分隔符

    #7、循环

     1 #把每个字符都打印出来
     2 msg='hello world'
     3 n=0#来个索引等于0,根据索引取值
     4 size=len(msg)
     5 while n<size:
     6     print(msg[n])
     7     n+=1
     8 第二种方式:
     9   不依赖索引
    10 for i in msg:
    11     print(i)
    12 第三种方式:用for的索引方式取值
    13 msg='hello world'
    14 n=0
    15 for i in range(0,10):#range范围,顾头不顾尾,这个地方还可以指定步长
    16         while n<i:
    17             print(msg[n])
    18             n+=1
    19 第四种方式:
    20 msg='hello world'
    21 n=0
    22 for i in range(0,len(msg)):#len取出长度,如果range(这里面只写一个3,指的就是从0到3)
    23         print(msg[i])
    #二:该类型总结
    1 存一个值or存多个值
        只能存一个值
    2 有序(能按照索引取值)
    3 可变or不可变
        !!!不可变:值变,id就变。不可变==可hash
    

    需要掌握的

     1 #1、strip,lstrip,rstrip
     2 print('***alex***'.strip('*'))
     3 print('***alex***'.ltrip('*'))
     4 print('***alex***'.rtrip('*'))
     5 #2、lower,upper
     6 print('ALEX'.lower())#都改成小写
     7 print('aaa'.upper())#都改成大写
     8 #3、startswith,endswith
     9 msg='alex is SB'
    10 print(msg.startswith('alex'))#以alex开头
    11 print(msg.startswith('a'))#a开头
    12 print(msg.endswith('SB'))#以SB结尾
    13 #4、format的三种玩法(格式赋值)
    14 print('my name is %s my age is %s' $('alex',18))
    15 'my name is {} my age is {}'.format('alex',18)按照顺序传值
    16 print('my name is {name} my age is {age}'.format(age=18,name='alex')#不依赖于位置(常用)
    17 print('{0} {1} {0}'.format('alex',18))
    18 #5、split,rsplit(把一个字符串切成一个列表)
    19 info='root:x:0:0'
    20 l=info.split(':')
    21 print(l)
    22 #6、join(把一个列表按照分隔符变成一个字符串)
    23 ':'.join(l)
    24 print(':'.join(l))
    25 反例:
    26 l=[1,2,3]
    27 print(':'.join(l))#只有在列表中的元素全是字符串类型,才能用join拼接
    28 #7、replace(取代)(有三个参数old老的值,new要改成什么值,count改几次)
    29 msg='alex say my name is alex,alex have on tesla'
    30 msg=msg.replace('alex','SB'1)#字符串是不可变类型,压根不能改,要改的话只能存成一个新的值,加上1就代表只改第一个
    31 print(msg)
    32 
    33 #8、isdigit(判断字符串内是不是纯数字)
    34 age=input('>>>:').strip()
    35 print(age.isdigit())#用户如果输入的是123或其他的数字返回值为True,否则False
    36 age=int(age)有一个猜年龄的程序,age用int只能把字符串中的数字转成整形才能做if判断和数字的比较
    37 age=input('>>>:').strip()
    38 if age.isdigit():
    39   age=int(age)
    40 else41   print('必须输入数字'42 
    43 age=int(age) 

    了解

     1 #1、find,rfind,index,rindex,count
     2 msg='hello world'
     3 print(msg.find('wo'))#返回值为6,就是说能找到第一个字符串的索引(默认从左边开始找,rfind就是从右边找)
     4 print(msg.find('SB'))#没有SB,所以返回-1
     5 print(msg.index('SB'))#这个的返回值就会报错
     6 print(msg.count('l'))#统计l这个字符串就是3个
     7 print(msg.count('SB'))#返回值为0
     8 
     9 #2、center,ljust,rjust,zfill(跟打印效果有关)
    10 print('egon'.center(30,*))#30为指定宽度,*为填充的字符串,egon集中显示
    11 print('egon'.ljust(30,*))#左对齐
    12 print('egon'.rjust(30,*))#右对齐
    13 print('egon'.zfill(30))#以0为填充符,默认往右对其
    14 #3、expandtabs跟tab有关
    15 print('hello	world'.expandtabs(10))
    16 #4、captalize,swapcase,title
    17 print('i am egon'.capitalize())#首字母大写
    18 print('i am egon'.title())#每一个单词首字母大写
    19 print('i am egon'.swapcase())#大小写反转
    20 
    21 #5、is数字系列
    22 #在python3中
    23 #isdigit能判断bytes,unicode
    24 print(num1.isdigit())#
    25 num1=b'4' #bytes
    26 num2=u'4' #unicode,python3中无需加u就是unicode#返回值True
    27 num3='' #中文数字#返回值False
    28 num4='' #罗马数字#返回值False
    29 
    30 #isnumeric能判断unicode
    31 print(num2.isdecimal())True
    32 print(num3.isdecimal())False
    33 print(num4.isdecimal())False
    34 
    35 #isnumeric来判断unicode,中文,罗马
    36 print(num2.isnumeric())True
    37 print(num3.isnumeric())True
    38 print(num4.isnumeric())True
    39 #6、is其他
    40 print('===>')
    41 name='egon123'
    42 print(name.isalnum()) #字符串由字母或数字组成
    43 print(name.isalpha()) #字符串只由字母组成
    44 
    45 print(name.isidentifier())#字符串包含关键字
    46 print(name.islower())#全都是小写字母用
    47 print(name.isupper())#判断大写
    48 print(name.isspace())#判断是不是空格
    49 print(name.istitle())#判断是不是标题(首字母大写是标题)

     列表list

     1 #作用:多个装备,多个爱好,多门课程,多个女朋友等
     2 
     3 #定义:[]内可以有多个任意类型的值,逗号分隔
     4 # my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...])
     5 # print(list('hello'))#list会产生一个列表
     6 # print(int('123'))
     7 # print(str(123))#优先掌握的操作:
     8 #1、按索引存取值(正向存取+反向存取):即可存也可以取      
     9 #2、切片(顾头不顾尾,步长)
    10 #3、长度
    11 my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    12 print(len(my_girl_friends))
    13 #4、成员运算in和not in
    14 print('wupeiqi' in my_girl_friends)
    15 #5、追加
    16 my_girl_friends[5]=3#IndexError: list assignment index out of range
    17 对用的索引只能取出值或者修改值,不能追加
    18 my_girl_friends.append(6)
    19 print(my_girl_friends)
    20 #6、删除
    21 del my_girl_friends[0]
    22 pirnt(my_girl_friends)
    23 #单纯的删除
    24 my_girl_friends.remove('yuanhao')
    25 #列表中删除并想拿到结果:取走
    26 res=my_girl_friends.pop(2)#pop()括号中如果没有值就从末尾去删
    27 print(res)
    28 
    29 my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    30 print(my_girl_friends.pop(0))#拿走alex
    31 print(my_girl_friends.pop(0))#拿走wupeiqi
    32 print(my_girl_friends.pop(0))#拿走yuanhao
    33 #7、循环
    34 my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    35 i=0
    36 while i<len(my_girl_friends):
    37   print(my_girl_friends)
    38   i+=1
    39 第二种方法:
    40 for item in my_girl_friends:
    41    print(item)
    42 
    43 例子:1到10,不打印出7,用for
    44 for item in range(10):
    45   if item==746     pass
    47     continue
    48   print(item)
    49 else:(上面只要不被break打断就执行else)
    50   print('>>>:')
    51 掌握的方法:
    52 my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    53 my_girl_friends.insert(1'egon')#指定索引
    54 print(my_girl_friends)
    55 
    56 my_girl_friends.clear()#清空掉
    57 print(my_girl_friends)
    58 
    59 l=my_girl_friends.copy()#拷贝一个列表
    60 print(l)
    61 
    62 my_girl_friends.count('yuanhao')#统计个数
    63 
    64 my_girl_friends.extend()#往列表中加值
    65 # l=['egon1','egon2']
    66 # my_girl_friends.extend(l)
    67 # my_girl_friends.extend('hello')
    68 # print(my_girl_friends)
    69 
    70 print(my_girl_friends.index('wupeiqi'))#取出索引值
    71 
    72 print(my_girl_friend.reverse())#把值翻转输出
    73 
    74 #排序sort
    75 l=[1,10,3,11,12]
    76 l.sort()
    77 print(l)
    78 
    79 倒着排序
    80 l.sort(reverse=True)
    81 print(l)
    82 
    83 l=[1,10,3,11,12'a']#不行,因为数字和字符串不能比较大小
    84 
    85 x='helloworld'
    86 y='z'
    87 print(y>x)#这个是根据abcd来比较的,因为z在h的后面
    #二:该类型总结
    1 存一个值or存多个值
        可以存多个值,值都可以是任意类型
    2 有序
    3 可变or不可变
        !!!可变:值变,id不变。可变==不可hash  

    元组tuple

     1 #作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
     2 
     3 #定义:与列表类型比,只不过[]换成()
     4 age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))
     5 print(type(age))
     6 验证元组不可变:#元组没有变取决于id
     7 age=(11,22,33,44,55)
     8 age[0]=12#报错,提示不支持修改
     9 t=(1,2,['a','b'])
    10 t[2]=='xxx'#代表把元组中的元素改掉了,但是元组是不能改的,但是可以改元素内部的值
    11 t[2][0]='A'
    12 print(t)
    13 这个地方只是把表中的a改成了A但是id没有变
    14 
    15 #优先掌握的操作:
    16 #1、按索引取值(正向取+反向取):只能取   
    17 #2、切片(顾头不顾尾,步长)
    18 age=(11,22,33,44,55)
    19 print(age[0:3])
    20 print(age)
    21 
    22 #3、长度
    23 print(len(age))
    24 #4、成员运算in和not in
    25 print(11 in age)
    26 #5、循环
    27 for item in age:
    28 print(item)
    29 
    30 掌握
    31 age=(11,22,33,44,55)
    32 print(age.index(33))#找索引
    33 print(age.count(33))#找个数
    #二:该类型总结
    1 存一个值or存多个值
        可以存多个值,值都可以是什么类型
    2 有序
    3 可变or不可变
      !!!不可变:值变,id就变。不可变==可hash

     字典dict

     1 #作用:存多个值,key-value存取,取值速度快
     2 
     3 #定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型
     4 定义字典方式info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
     5  6 了解
     7 info=dict(name='egon',age=18,sex='male')
     8  9 info=dict([['name','egon'],('age',18),('sex','male')])
    10 11 info={}.fromkeys(('name','age','sex'),None)#快速产生空字典
    12 info={}.fromkeys('hello',None)
    13 print(info)
    14 #优先掌握的操作:
    15 #1、按key存取值:可存可取
    16 d={'name':'egon'}
    17 print(d['name'])
    18 
    19 d=['age']=18#存数据
    20 print(d)
    21 #2、长度len
    22 info={'name':'egon','age':18,'sex':'male'}
    23 print(len(info))
    24 
    25 #3、成员运算in和not in
    26 info={'name':'egon','age':18,'sex':'male'}
    27 print('name' in info)
    28 
    29 #4、删除
    30 info={'name':'egon','age':18,'sex':'male'}
    31 print(info.pop('name'))#对于列表如果不加索引默认是从右边删除,但是字典是无序的,pop必须要传key
    32 print(info)
    33 
    34 print(info.popitem())#item就是一个元素,在字典key:value算是一个元素,所以出来的即有key也有value
    35 print(info)#最右边的那个值就拿出来了
    36 #5、键keys(),值values(),键值对items()了解
    37 print(info.keys())#输出的值像是以列表的形式取出
    38 但是print(info.keys()[0])#没法取出值,所以不是列表
    39 这个key的值可以用来做for循环,for循环不依赖索引
    40 for key in info.keys():
    41   print(key)
    42 
    43 print(list(info.keys()))#这个是真正的裂变加[0],可以取值
    44 
    45 print(list(info.keys()))
    46 
    47 print(info.items())#转成真正的列表print(list(info.items()))
    48 
    49 
    50 #6、循环
    51 info={'name':'egon','age':18,'sex':'male'}
    52 for k in info:
    53   print(k,info[k])
    54 
    55 其他需要掌握的方法
    56 info={'name':'egon','age':18,'sex':'male'}
    57 print(info['hobbies'])#不存在的key,就会报错
    58 print(info.get('hobbies'))#不会报错,返回none
    59 print(info.get('hobbies','没有'))#这个的返回值就是‘没有’
    60 
    61 info.pop('name1','xxx')
    62 print(info.pop('name1','xxx'))#这个的返回值就是‘xxx’,跟get差不对
    63 
    64 info.update
    65 info={'name':'egon','age':18,'sex':'male'}
    66 d={'x':1,'y',2,'name':'EGON'}
    67 info.update(d)#原来的字典没有我给你加上,如果有就更新刚给赋的值
    68 print(info)
    69 
    70 info.setdefault()
    71 info={'name':'egon','sex':'male'}
    72 value=info.setdefault('age',18)#字典中新增一个key:value这个元素,增进去会有个返回值,返回值是曾进去的value
    73 print(value)
    74 
    75 info={'name':'egon','age',18,'sex':'male'}
    76 value=info.setdefault('age',18)#字典中如果不存在我就把这个key:value加进去,并且返回值是value,如果有这个就不覆盖,返回原来有的值
    77 print(value)
    78 print(info)
    79 
    80 
    81 info={'name':'egon'}
    82 info['hobbies']=[]
    83 info['hobbies'].append('music')
    84 info['hobbies'].append('read')
    85 print(info)
    86 
    87 info={'name':'egon''hobbies':['music']}
    88 if 'hobbies' not in info:
    89   info['hobbies']=[]
    90 else:
    91   info['hobbies'.append('read')]
    92 用setdefault实现
    93 info={'name':'egon''hobbies':['music']}
    94 hobbies_list=info.setdefault('hobbies',[])
    95 print(hobbis_list)
    96 hobbies_list.append('read')
    97 hobbies_list.append('play')
    98 print(info)
    #二:该类型总结
    1 存一个值or存多个值
        可以存多个值,值都可以是任意类型,key必须是不可变类型
    
    2 无序
    
    3 可变or不可变
        !!!可变:值变,id不变。可变==不可hash
    

    集合引入

     1 # pythons=['egon','axx','ysb','wxx']
     2 # linuxs=['egon','oldboy','oldgirl','smallboy','smallgirl']
     3 #
     4 # python_linux=[]
     5 #
     6 # for student in pythons:
     7 #     if student in linuxs:
     8 #         python_linux.append(student)
     9 #
    10 # print(python_linux) 

    集合set

      1 #作用:关系运算,去重
      2 #定义集合:{}内用逗号分割每个元素都必须是不可变类型,元素不能重复,无序
      3 # s={1,'a',[1,2]} #TypeError: unhashable type: 'list',不可哈希就是可变类型,可变就不能当字典元素
      4 # s={1,2,3,1} #s=set({1,2,3,1})
      5 # print(s,type(s))
      6 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
      7 
      8 #优先掌握的操作:
      9 #1、长度len
     10 # s={1,2,3,1} #s=set({1,2,3,1})
     11 # print(len(s))
     12 
     13 #2、成员运算in和not in
     14 # names={'egon','alex'}
     15 # print('egon' in names)
     16 
     17 #3、|合集
     18 pythons={'egon','axx','ysb','wxx'}
     19 linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'}
     20 
     21 #4、&交集:同时报名两门课程的学生
     22 # print(pythons & linuxs)
     23 # print(pythons.intersection(linuxs))
     24 
     25 #5、|合集:老男孩所有的学生
     26 # print(pythons | linuxs)
     27 # print(pythons.union(linuxs))
     28 
     29 #6、^对称差集:没有同时报名两门课程
     30 # print(pythons ^ linuxs)
     31 # print(pythons.symmetric_difference(linuxs))
     32 
     33 #7.1  -差集:只报名python课程的学生
     34 # print(pythons - linuxs)
     35 # print(pythons.difference(linuxs))
     36 
     37 #7.2  -差集:只报名linux课程的学生
     38 # print(linuxs-pythons)
     39 
     40 #8 父集:>,>=,子集:<,<=
     41 # s1={1,2,3}
     42 # s2={1,2,}
     43 # print(s1 >= s2)
     44 # print(s1.issuperset(s2))#s1是s2它爹
     45 # print(s2.issubset(s1))#判断S2是S1它儿子
     46 
     47 # linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'}
     48 # for student in linuxs:
     49 #     print(student)
     50 
     51 
     52 
     53 #了解的知识点
     54 # s1={1,2,3}
     55 # s2={1,2,}
     56 # print(s1-s2)
     57 # print(s1.difference(s2))
     58 # s1.difference_update(s2) #s1=s1.difference(s2)
     59 # print(s1)
     60 
     61 # s2={1,2,3,4,5,'a'}
     62 # print(s2.pop())
     63 
     64 # s2.add('b')
     65 # print(s2)
     66 
     67 # s2.discard('b')
     68 # s2.remove('b') #删除的元素不存在则报错
     69 # print(s2)
     70 
     71 
     72 # s1={1,2,3,4,5,'a'}
     73 # s2={'b','c',}
     74 # print(s1.isdisjoint(s2)) #两个集合没有共同部分时,返回值为True
     75 
     76 
     77 # s2={1,2,3,4,5,'a'}
     78 # s2.update({6,7,8})
     79 # print(s2)
     80 
     81 去重:
     82 # l=['a','b',1,'a','a']#s=set(1)print(s)set指的是去掉重复的
     83 # print(list(set(l)))#
     84 
     85 # print(set('hello'))#一个个输出,没有顺序
     86 # print(set({'a':1,'b':2,'c':3}))##for循环字典得到的就是Key
     87 
     88 s1={1,2,3}
     89 s2={2,3,}
     90 print(s1-s2)#s1并不变
     91 print(s1.difference(s2))
     92 print(s1.defference_update(s2))#减完了以后并更新相当于赋值操作s1=s1.difference(s2)
     93 print(s1)
     94 了解的知识点:
     95 s1={1,2,3,4,5,'a'}
     96 print(s1.pop())#删的意思,随机删
     97 s1.add('b')#只能添加不可变类型进去
     98 print(s1.add('b'))
     99 s1.discard(s1)#明确指出删除的值#
    100 s1.remove('b')#如果用这个删除集合中没有的字符串会报错,discard就不会报错
    101 
    102 s1={1,2,3,4,5,'a'}
    103 s2={'b','c'}
    104 print(s1.isdisjoint(s2))#两个集合没有共同部分时,返回值为True
    105 
    106 s1={1,2,3,4,5,'a'}
    107 s2.update({6,7,8})#add只能加一个值,update可以加多个值
    108 print(s2)

     数据类型总结: 

    按存储空间的占用分(从低到高)
    数字
    字符串
    集合:无序,即无序存索引相关信息
    元组:有序,需要存索引相关信息,不可变
    列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
    字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

    按存值个数区分

    标量/原子类型 数字,字符串
    容器类型 列表,元组,字典
    
    
    

    按可变不可变区分

    可变 列表,字典,集合
    不可变 数字,字符串,元组
    
    
    

    按访问顺序区分

    直接访问 数字
    顺序访问(序列类型) 字符串,列表,元组
    key值访问(映射类型) 字典
    
    
    
    
    

     字符编码:

    字符编码总结:

        1.存取文件不乱码的法则:用什么编码存的,用什么编码读

        2.unicode----------encode-------->转成其他编码gbk,叫做encode

         gbk-------->decode----------->unicode

        

        3. python3解释器默认使用的字符编码是utf-8

         python2解释器默认使用的字符编码 ascii

        4.python2的str就是python3的bytes

         python2的unicode就是python3的str

    文件处理:

       f=open( 'a.txt','rt',encoding='utf-8')#r默认就是rt文本模式#是操作系统打开这个文件,windows默认编码是gbk,而我存的是utf-8存的,所以我们要加上encoding='utf-8',告诉操作系统用utf-8打开,就不会报错了

       data=f.read()#对出文件内容

       print(data)

       f.close()#关闭文件,回收的是操作系统的资源

       如果这个时候在f.read(),就看不到了,因为文件关闭,操作系统已经回收了资源,所以看不到

    with open( 'a.txt','rt',encoding='utf-8')  as f:#文件打开的值给f

      pass#执行完这个子代码后with会自动执行f.close()操作,避免忘记close()操作

      f=open( 'a.txt','rt',encoding='utf-8')

      data=f.read()

      print('==1=>',data1)

      data2=f.read()#这个意思是光标从文件的开始已经到了结尾,如果在print下面的2就为空了

      print(==2=>,data2)

      

      print(f.readline())#代表的是每次读一行

      print(f.readline())#这个跟上面的输出结果会有空格(换行),想取消print换行就          print(f.readline(),end='')

      print(f.readlines())#这个也是吧文件中的内容都读出来,但是会把文件内容放到列表中去

      只限文件小的时候,因为如果文件过大,一下就会读到内存中去

    写操作

      f=open( 'a.txt','w',encoding='utf-8')#如果用r并且没有a.txt这个文件,那么就会报错,用w的话不会报错,没有这个文件就会造出这个文件出来,如果文件存在,还用w,就是相当于有创建了个文件,并把文件原来的文件覆盖掉了

    f=open( 'a.txt','w',encoding='utf-8')

    f.write('1111 ')

    f.write('2222 ')#还可以f.write('111 222 ')

    f.close()

    f.writelines(['哈哈哈 ','你好','alex'])#可以通过列表或元组形式写到里面去

  • 相关阅读:
    Centos7下rc.local文件开机不执行…
    Centos7添加密码安全策略
    Java8 时间日期类操作
    XML配置spring session jdbc实现session共享
    Spring Boot 2.x以后static下面的静态资源被拦截
    外观模式
    组合设计模式
    Java线程池源码解析
    观察者模式
    Java使用POI解析Excel表格
  • 原文地址:https://www.cnblogs.com/yinfutao/p/8017605.html
Copyright © 2020-2023  润新知