python基础04day

一 引子

数据类型 用途 定义方式 是否多项 有/无序 可/不可变 对应状态
数字     —— 不可  
字符串    “”‘’“““””” 不可  
列表    【】  同类型数据
字典  关键词  {:}  不同类型数据
元组  使函数可以返回多个值  (), 不可  压缩数据
集合  集运算  set()  关系运算、去重
布尔     —— 不可  

 

 

 

 

 

 

 

二 数字

  复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

  十进制(n)——>8进制(m):

    m=oct(n),type(m):string

  8进制(m)——>十进制(n):

    n=int(‘m’,8)

三 字符串

四 列表

五 元组

元组属于不可变类型,每一个值可以是任意类型

六 字典

字典属于可变类型,key必须为不可变类型那个,value可以是任意类型

七 集合 

集合属于可变类型,每一个值必须是不可变类型

八 数据类型总结

九 运算符

十 字符编码

 1 # 临时文件——》内存
 2 # 永久文件——》硬盘
 3 # 打开编辑器——》将程序文件读取到内存
 4 # 打开文本——》将硬盘文件读取到内存生成临时文件
 5 # (ASCII——》)Unicode——》UTF-8(可变长编码)ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作
 6 # 基于目前的现状,内存中的编码固定就是unicode,我们唯一可变的就是硬盘的上对应的字符编码。总结:内存中统一采用unicode,浪费空间来换取可以转换成任意编码(不乱码),硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。
 7 # 乱码的两种情况:
 8 #乱码一:存文件时就已经乱码
 9 #乱码二:存文件时不乱码而读文件时乱码
10 # 总结:
11 #1、保证不乱吗的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码
12 
13 #2、在内存中写的所有字符,一视同仁,都是unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是unicode转换成其他编码格式的过程了
14 # python2中的str类型就是python3的bytes类型

 

十一 文件处理

  1 '''
  2 文件操作:python文件操作空间——》操作系统——》内存|硬盘
  3 3 如何用文件
  4     文件操作的基本步骤:
  5         f=open(...) #打开文件,拿到一个文件对象f,f就相当于一个遥控器,可以向操作系统发送指令
  6         f.read() # 读写文件,向操作系统发送读写文件指令
  7         f.close() # 关闭文件,回收操作系统的资源
  8     上下文管理:
  9         with open(...) as f:
 10             pass
 11 
 12 一 文件的打开模式
 13     r: 只读模式L(默认的)
 14     w: 只写模式
 15     a: 只追加写模式
 16 
 17 二 控制读写文件单位的方式(必须与r\w\a连用)
 18     t : 文本模式(默认的),一定要指定encoding参数
 19         优点: 操作系统会将硬盘中二进制数字解码成unicode然后返回
 20         强调:只针对文本文件有效
 21 
 22     b: 二进制模式,一定不能指定encoding参数
 23         优点:
 24 
 25 '''
 26 
 27 #一 r: 只读模式L(默认的)
 28 # 1 当文件不存时,会报错
 29 # 2 当文件存在时,文件指针指向文件的开头
 30 
 31 # with open('a.txt',mode='rt',encoding='utf-8') as f:
 32     # res1=f.read()
 33     # print('111===>',res1)
 34     # res2=f.read()
 35     # print('222===>',res2)
 36 
 37     # print(f.read())
 38     # print(f.readable())可读?
 39     # print(f.writable())可写?
 40     # print(f.readline())行读
 41     # print(f.readline())
 42 
 43     # for line in f:
 44     #     print(line)
 45 
 46     # l=[]
 47     # for line in f:
 48     #     l.append(line)
 49     # print(l)
 50     # print(f.readlines())读取所有行(直到结束符 EOF)并返回列表
 51 
 52 # 二 w: 只写模式
 53 # 1 当文件不存时,新建一个空文档
 54 # 2 当文件存在时,清空文件内容,文件指针跑到文件的开头
 55 # with open('c.txt',mode='wt',encoding='utf-8') as f:
 56     # print(f.readable())
 57     # print(f.writable())
 58     # print(f.read())
 59     #
 60     # f.write('哈哈哈\n')
 61     # f.write('你愁啥\n')
 62     # f.write('瞅你咋地\n')
 63 
 64     # f.write('1111\n2222\n333\n4444\n')
 65 
 66     # info=['egon:123\n','alex:456\n','lxx:lxx123\n']
 67     # for line in info:
 68     #     f.write(line)
 69     # f.writelines(info)列表写多行
 70 
 71 # with open('c.txt',mode='rb') as f:
 72 #     print(f.read())
 73 
 74 
 75 # with open('c.txt',mode='wb') as f:
 76 #     f.write('哈哈哈\n'.encode('utf-8'))
 77 #     f.write('你愁啥\n'.encode('utf-8'))
 78 #     f.write('瞅你咋地\n'.encode('utf-8'))
 79 
 80 # 三 a: 只追加写模式
 81 # 1 当文件不存时,新建一个空文档,文件指针跑到文件的末尾
 82 # 2 当文件存在时,文件指针跑到文件的末尾
 83 
 84 # with open('c.txt',mode='at',encoding='utf-8') as f:
 85     # print(f.readable())可追加?
 86     # print(f.writable())
 87     # f.read()
 88 
 89     # f.write('虎老师:123\n')
 90 
 91 
 92 # 在文件打开不关闭的情况下,连续的写入,下一次写入一定是基于上一次写入指针的位置而继续的
 93 # with open('d.txt',mode='wt',encoding='utf-8') as f:
 94 #     f.write('虎老师1:123\n')
 95 #     f.write('虎老师2:123\n')
 96 #     f.write('虎老师3:123\n')
 97 
 98 # with open('d.txt',mode='wt',encoding='utf-8') as f:
 99 #     f.write('虎老师4:123\n')
100 
101 
102 
103 # with open('d.txt',mode='at',encoding='utf-8') as f:
104 #     f.write('虎老师1:123\n')
105 #     f.write('虎老师2:123\n')
106 #     f.write('虎老师3:123\n')
107 with open('d.txt',mode='at',encoding='utf-8') as f:
108     f.write('虎老师4:123\n')
109 # 可读可写:
110 # r+t
111 
112 # w+t
113 
114 # a+t
115 
116 with open('a.txt',mode='r+t',encoding='utf-8') as f:
117     # print(f.readable())
118     # print(f.writable())
119     msg=f.readline()
120     print(msg)
121     f.write('xxxxxxxxxxx\n')
122 # f.seek
123 # 文件内指针移动,只有t模式下的read(n),n代表的字符的个数
124 # 除此以外文件内指针的移动都是以字节为单位
125 # with open('a.txt',mode='rt',encoding='utf-8') as f:
126 #     msg=f.read(1)
127 #     print(msg)
128 
129 # with open('a.txt',mode='rb') as f:
130 #     msg=f.read(3)
131 #     print(msg.decode('utf-8'))
132 
133 
134 # f.seek(offset,whence)有两个参数:
135 # offset: 代表控制指针移动的字节数
136 # whence: 代表参照什么位置进行移动
137 #        whence = 0: 参照文件开头(默认的),特殊???,可以在t和b模式下使用
138 #        whence = 1: 参照当前所在的位置,必须在b模式下用
139 #        whence = 2: 参照文件末尾,必须在b模式下用
140 
141 # with open('a.txt',mode='rt',encoding='utf-8') as f:
142 #     f.seek(6,0)
143 #     msg=f.read(1)
144 #     print(msg)
145 
146 # with open('a.txt',mode='rb') as f:
147 #     f.seek(3,0)
148 #     msg=f.read(3)
149 #     print(msg.decode('utf-8'))
150 
151 # with open('a.txt',mode='rb') as f:
152 #     msg=f.read(3)
153 #     # print(msg.decode('utf-8'))
154 #     print(f.tell())
155 #     # f.seek(6,0)
156 #     f.seek(3,1)
157 #     msg1=f.read(3)
158 #     print(msg1.decode('utf-8'))
159 
160 
161 # with open('a.txt',mode='rb') as f:
162 #     msg=f.read(3)
163 #     # print(msg.decode('utf-8'))
164 #     print(f.tell())
165 #     # f.seek(6,0)
166 #     f.seek(3,1)
167 #     msg1=f.read(3)
168 #     print(msg1.decode('utf-8'))
169 
170 
171 # with open('a.txt',mode='rb') as f:
172 #     # f.seek(0,2)
173 #     # print(f.tell())
174 #     f.seek(-3,2)
175 #     msg=f.read(3)
176 #     print(msg.decode('utf-8'))
177 
178 
179 
180 # with open('access.log',mode='rb') as f:
181 #     f.seek(0,2) # 当前位置是147bytes
182 #
183 #     while True:
184 #         line=f.readline() # 当前位置是196bytes
185 #         # print(f.tell())
186 #         if len(line) == 0:
187 #             # 没有新的一行内容追加进来
188 #             pass
189 #         else:
190 #             # 有新的一行内容追加进来
191 #             print(line.decode('utf-8'),end='')
192 
193 
194 # with open('access.log',mode='rb') as f:
195 #     f.seek(0,2) # 当前位置是147bytes
196 #
197 #     while True:
198 #         line=f.readline() # 当前位置是196bytes
199 #         if len(line) != 0:
200 #             print(line.decode('utf-8'),end='')
201 
202 with open('a.txt',mode='r+t',encoding='utf-8') as f:
203     f.truncate(6)
204 # with open('c.txt','r+t',encoding='utf-8') as f:
205 #     f.seek(13,0)
206 #     # f.write('在老男孩')
207 #     f.write('h')
208 
209 # 修改文件的方式一:
210 # 1 将文件内容由硬盘全部读入内存
211 # 2 在内存中完成修改
212 # 3 将内存中修改后的结果覆盖写回硬盘
213 
214 # with open('d.txt',mode='rt',encoding='utf-8') as f:
215 #     all_data=f.read()
216 
217 # print(all_data,type(all_data))
218 
219 # with open('d.txt',mode='wt',encoding='utf-8') as f:
220 #     f.write(all_data.replace('alex','dsb'))
221 
222 
223 # 错误的做法
224 # with open('d.txt',mode='rt',encoding='utf-8') as f1,open('d.txt',mode='wt',encoding='utf-8') as f2:
225 #     all_data=f1.read()
226 #     f2.write(all_data.replace('dsb','alex'))
227 
228 
229 
230 # 修改文件的方式二:
231 # 1 以读的方式打开源文件,以写的方式打开一个临时文件
232 # 2 从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
233 # 3 删掉源文件,将临时文件重命名为源文件名
234 # import os
235 #
236 # with open('d.txt',mode='rt',encoding='utf-8') as read_f,open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f:
237 #     for line in read_f:
238 #         write_f.write(line.replace('alex','dsb'))
239 #
240 # os.remove('d.txt')
241 # os.rename('.d.txt.swap','d.txt')
242 
243 # 方式一:
244 # 优点: 在文件修改的过程中硬盘上始终一份数据
245 # 缺点: 占用内存过多,不适用于大文件
246 
247 
248 # 方式二:
249 # 优点: 同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
250 # 缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘,

 

十二 作业

posted @ 2018-07-20 21:45  王康杰  阅读(156)  评论(0编辑  收藏  举报