一 引子

数据类型 用途 定义方式 是否多项 有/无序 可/不可变 对应状态
数字     —— 不可  
字符串    “”‘’“““””” 不可  
列表    【】  同类型数据
字典  关键词  {:}  不同类型数据
元组  使函数可以返回多个值  (), 不可  压缩数据
集合  集运算  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. # with open('c.txt',mode='wb') as f:
  75. # f.write('哈哈哈\n'.encode('utf-8'))
  76. # f.write('你愁啥\n'.encode('utf-8'))
  77. # f.write('瞅你咋地\n'.encode('utf-8'))
  78.  
  79. # 三 a: 只追加写模式
  80. # 1 当文件不存时,新建一个空文档,文件指针跑到文件的末尾
  81. # 2 当文件存在时,文件指针跑到文件的末尾
  82.  
  83. # with open('c.txt',mode='at',encoding='utf-8') as f:
  84. # print(f.readable())可追加?
  85. # print(f.writable())
  86. # f.read()
  87.  
  88. # f.write('虎老师:123\n')
  89.  
  90. # 在文件打开不关闭的情况下,连续的写入,下一次写入一定是基于上一次写入指针的位置而继续的
  91. # with open('d.txt',mode='wt',encoding='utf-8') as f:
  92. # f.write('虎老师1:123\n')
  93. # f.write('虎老师2:123\n')
  94. # f.write('虎老师3:123\n')
  95.  
  96. # with open('d.txt',mode='wt',encoding='utf-8') as f:
  97. # f.write('虎老师4:123\n')
  98.  
  99. # with open('d.txt',mode='at',encoding='utf-8') as f:
  100. # f.write('虎老师1:123\n')
  101. # f.write('虎老师2:123\n')
  102. # f.write('虎老师3:123\n')
  103. with open('d.txt',mode='at',encoding='utf-8') as f:
  104. f.write('虎老师4:123\n')
  105. # 可读可写:
  106. # r+t
  107.  
  108. # w+t
  109.  
  110. # a+t
  111.  
  112. with open('a.txt',mode='r+t',encoding='utf-8') as f:
  113. # print(f.readable())
  114. # print(f.writable())
  115. msg=f.readline()
  116. print(msg)
  117. f.write('xxxxxxxxxxx\n')
  118. # f.seek
  119. # 文件内指针移动,只有t模式下的read(n),n代表的字符的个数
  120. # 除此以外文件内指针的移动都是以字节为单位
  121. # with open('a.txt',mode='rt',encoding='utf-8') as f:
  122. # msg=f.read(1)
  123. # print(msg)
  124.  
  125. # with open('a.txt',mode='rb') as f:
  126. # msg=f.read(3)
  127. # print(msg.decode('utf-8'))
  128.  
  129. # f.seek(offset,whence)有两个参数:
  130. # offset: 代表控制指针移动的字节数
  131. # whence: 代表参照什么位置进行移动
  132. # whence = 0: 参照文件开头(默认的),特殊???,可以在t和b模式下使用
  133. # whence = 1: 参照当前所在的位置,必须在b模式下用
  134. # whence = 2: 参照文件末尾,必须在b模式下用
  135.  
  136. # with open('a.txt',mode='rt',encoding='utf-8') as f:
  137. # f.seek(6,0)
  138. # msg=f.read(1)
  139. # print(msg)
  140.  
  141. # with open('a.txt',mode='rb') as f:
  142. # f.seek(3,0)
  143. # msg=f.read(3)
  144. # print(msg.decode('utf-8'))
  145.  
  146. # with open('a.txt',mode='rb') as f:
  147. # msg=f.read(3)
  148. # # print(msg.decode('utf-8'))
  149. # print(f.tell())
  150. # # f.seek(6,0)
  151. # f.seek(3,1)
  152. # msg1=f.read(3)
  153. # print(msg1.decode('utf-8'))
  154.  
  155. # with open('a.txt',mode='rb') as f:
  156. # msg=f.read(3)
  157. # # print(msg.decode('utf-8'))
  158. # print(f.tell())
  159. # # f.seek(6,0)
  160. # f.seek(3,1)
  161. # msg1=f.read(3)
  162. # print(msg1.decode('utf-8'))
  163.  
  164. # with open('a.txt',mode='rb') as f:
  165. # # f.seek(0,2)
  166. # # print(f.tell())
  167. # f.seek(-3,2)
  168. # msg=f.read(3)
  169. # print(msg.decode('utf-8'))
  170.  
  171. # with open('access.log',mode='rb') as f:
  172. # f.seek(0,2) # 当前位置是147bytes
  173. #
  174. # while True:
  175. # line=f.readline() # 当前位置是196bytes
  176. # # print(f.tell())
  177. # if len(line) == 0:
  178. # # 没有新的一行内容追加进来
  179. # pass
  180. # else:
  181. # # 有新的一行内容追加进来
  182. # print(line.decode('utf-8'),end='')
  183.  
  184. # with open('access.log',mode='rb') as f:
  185. # f.seek(0,2) # 当前位置是147bytes
  186. #
  187. # while True:
  188. # line=f.readline() # 当前位置是196bytes
  189. # if len(line) != 0:
  190. # print(line.decode('utf-8'),end='')
  191.  
  192. with open('a.txt',mode='r+t',encoding='utf-8') as f:
  193. f.truncate(6)
  194. # with open('c.txt','r+t',encoding='utf-8') as f:
  195. # f.seek(13,0)
  196. # # f.write('在老男孩')
  197. # f.write('h')
  198.  
  199. # 修改文件的方式一:
  200. # 1 将文件内容由硬盘全部读入内存
  201. # 2 在内存中完成修改
  202. # 3 将内存中修改后的结果覆盖写回硬盘
  203.  
  204. # with open('d.txt',mode='rt',encoding='utf-8') as f:
  205. # all_data=f.read()
  206.  
  207. # print(all_data,type(all_data))
  208.  
  209. # with open('d.txt',mode='wt',encoding='utf-8') as f:
  210. # f.write(all_data.replace('alex','dsb'))
  211.  
  212. # 错误的做法
  213. # with open('d.txt',mode='rt',encoding='utf-8') as f1,open('d.txt',mode='wt',encoding='utf-8') as f2:
  214. # all_data=f1.read()
  215. # f2.write(all_data.replace('dsb','alex'))
  216.  
  217. # 修改文件的方式二:
  218. # 1 以读的方式打开源文件,以写的方式打开一个临时文件
  219. # 2 从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
  220. # 3 删掉源文件,将临时文件重命名为源文件名
  221. # import os
  222. #
  223. # with open('d.txt',mode='rt',encoding='utf-8') as read_f,open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f:
  224. # for line in read_f:
  225. # write_f.write(line.replace('alex','dsb'))
  226. #
  227. # os.remove('d.txt')
  228. # os.rename('.d.txt.swap','d.txt')
  229.  
  230. # 方式一:
  231. # 优点: 在文件修改的过程中硬盘上始终一份数据
  232. # 缺点: 占用内存过多,不适用于大文件
  233.  
  234. # 方式二:
  235. # 优点: 同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
  236. # 缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘,

十二 作业

python基础04day的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  6. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

随机推荐

  1. django+sqlite进行web开发(二)

    模板 前面的例子中,我们是直接将HTML写在了Python代码中,这种写法并不可取.我们需要使用模板技术将页面设计和Python代码分离. 模板通常用于产生HTML,但是Django的模板也能产生任何 ...

  2. PHP实例:获取操作系统、IP、地理位置、浏览器、等信息

    获取访客操作系统以及浏览器语言 <?php function GetBrowser(){ if(!empty($_SERVER['HTTP_USER_AGENT'])){ $br = $_SER ...

  3. JMeter【第五篇】关联:5种方法

    前几天在Q群里看到群友发的最近10年性能测试工具使用率的统计,最近的2018年,jmeter+loadrunner占了93%的使用率,说明这两个是主流,其中,jmeter的使用率逐年提升,现在已经超过 ...

  4. wordpress怎么用AMP加速器呢

    AMP项目(Accelerated Mobile Pages)是一个开放源代码计划,旨在为所有人打造更好的网络体验.借助该项目,用户可以打造出在各种设备和分发平台上都能始终如一地快速加载且效果出色的精 ...

  5. 洛谷 CF997A Convert to Ones

    洛谷 CF997A Convert to Ones 洛谷传送门 题意翻译 给你一个长度为 nn 的01串( n \leq 310^5n*≤3∗105 ),你有两种操作: 1.将一个子串翻转,花费 XX ...

  6. ant design pro如何实现分步表单时,返回上一步值依然被保存

    首先,分步表单ant design pro支持,看官方Demo即可,那么如何实现如题,关键在于设置initialValue {getFieldDecorator('name', { initialVa ...

  7. q1095

    一,写题 1,我这个递归的错误我挺想搞出来的 int fa(int x) { ) return cnt; ==) { x=x/; cout<<"测试1:"<< ...

  8. SDOI2010选做

    Round1 D1T1外星千足虫 \(BSOJ2793\)--高斯消元解异或方程组 简述 有\(n\)个数\(\{a_i\}\) 给出\(m\)个信息,每个信息给出\(\displaystyle{(\ ...

  9. 从rpm包提取rpm spec 的几种方法

    包含了源码包 先安装,然后在rpmbuild 目录直接可以查看文件 不用安装 ,使用rpm2cpio rpm2cpio myrpm.src.rpm | cpio -civ '*.spec' 没有源码 ...

  10. python源码解剖

    print()本身就是用了多态:不同类型的对象,其实是调用了自身的print()方法 多态:动物 狗1 = new狗() 用公共的部分来指定类型,实则是调用各自的属性 创建对象有两种方式: 通过C A ...