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'])#可以通过列表或元组形式写到里面去

原文地址:https://www.cnblogs.com/yinfutao/p/8017605.html