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可以是任意类型
七 集合
集合属于可变类型,每一个值必须是不可变类型
八 数据类型总结
九 运算符
十 字符编码
# 临时文件——》内存
# 永久文件——》硬盘
# 打开编辑器——》将程序文件读取到内存
# 打开文本——》将硬盘文件读取到内存生成临时文件
# (ASCII——》)Unicode——》UTF-8(可变长编码)ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作
# 基于目前的现状,内存中的编码固定就是unicode,我们唯一可变的就是硬盘的上对应的字符编码。总结:内存中统一采用unicode,浪费空间来换取可以转换成任意编码(不乱码),硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。
# 乱码的两种情况:
#乱码一:存文件时就已经乱码
#乱码二:存文件时不乱码而读文件时乱码
# 总结:
#1、保证不乱吗的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码 #2、在内存中写的所有字符,一视同仁,都是unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是unicode转换成其他编码格式的过程了
# python2中的str类型就是python3的bytes类型
十一 文件处理
'''
文件操作:python文件操作空间——》操作系统——》内存|硬盘
3 如何用文件
文件操作的基本步骤:
f=open(...) #打开文件,拿到一个文件对象f,f就相当于一个遥控器,可以向操作系统发送指令
f.read() # 读写文件,向操作系统发送读写文件指令
f.close() # 关闭文件,回收操作系统的资源
上下文管理:
with open(...) as f:
pass 一 文件的打开模式
r: 只读模式L(默认的)
w: 只写模式
a: 只追加写模式 二 控制读写文件单位的方式(必须与r\w\a连用)
t : 文本模式(默认的),一定要指定encoding参数
优点: 操作系统会将硬盘中二进制数字解码成unicode然后返回
强调:只针对文本文件有效 b: 二进制模式,一定不能指定encoding参数
优点: ''' #一 r: 只读模式L(默认的)
# 1 当文件不存时,会报错
# 2 当文件存在时,文件指针指向文件的开头 # with open('a.txt',mode='rt',encoding='utf-8') as f:
# res1=f.read()
# print('111===>',res1)
# res2=f.read()
# print('222===>',res2) # print(f.read())
# print(f.readable())可读?
# print(f.writable())可写?
# print(f.readline())行读
# print(f.readline()) # for line in f:
# print(line) # l=[]
# for line in f:
# l.append(line)
# print(l)
# print(f.readlines())读取所有行(直到结束符 EOF)并返回列表 # 二 w: 只写模式
# 1 当文件不存时,新建一个空文档
# 2 当文件存在时,清空文件内容,文件指针跑到文件的开头
# with open('c.txt',mode='wt',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# print(f.read())
#
# f.write('哈哈哈\n')
# f.write('你愁啥\n')
# f.write('瞅你咋地\n') # f.write('1111\n2222\n333\n4444\n') # info=['egon:123\n','alex:456\n','lxx:lxx123\n']
# for line in info:
# f.write(line)
# f.writelines(info)列表写多行 # with open('c.txt',mode='rb') as f:
# print(f.read()) # with open('c.txt',mode='wb') as f:
# f.write('哈哈哈\n'.encode('utf-8'))
# f.write('你愁啥\n'.encode('utf-8'))
# f.write('瞅你咋地\n'.encode('utf-8')) # 三 a: 只追加写模式
# 1 当文件不存时,新建一个空文档,文件指针跑到文件的末尾
# 2 当文件存在时,文件指针跑到文件的末尾 # with open('c.txt',mode='at',encoding='utf-8') as f:
# print(f.readable())可追加?
# print(f.writable())
# f.read() # f.write('虎老师:123\n') # 在文件打开不关闭的情况下,连续的写入,下一次写入一定是基于上一次写入指针的位置而继续的
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('虎老师1:123\n')
# f.write('虎老师2:123\n')
# f.write('虎老师3:123\n') # with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('虎老师4:123\n') # with open('d.txt',mode='at',encoding='utf-8') as f:
# f.write('虎老师1:123\n')
# f.write('虎老师2:123\n')
# f.write('虎老师3:123\n')
with open('d.txt',mode='at',encoding='utf-8') as f:
f.write('虎老师4:123\n')
# 可读可写:
# r+t # w+t # a+t with open('a.txt',mode='r+t',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
msg=f.readline()
print(msg)
f.write('xxxxxxxxxxx\n')
# f.seek
# 文件内指针移动,只有t模式下的read(n),n代表的字符的个数
# 除此以外文件内指针的移动都是以字节为单位
# with open('a.txt',mode='rt',encoding='utf-8') as f:
# msg=f.read(1)
# print(msg) # with open('a.txt',mode='rb') as f:
# msg=f.read(3)
# print(msg.decode('utf-8')) # f.seek(offset,whence)有两个参数:
# offset: 代表控制指针移动的字节数
# whence: 代表参照什么位置进行移动
# whence = 0: 参照文件开头(默认的),特殊???,可以在t和b模式下使用
# whence = 1: 参照当前所在的位置,必须在b模式下用
# whence = 2: 参照文件末尾,必须在b模式下用 # with open('a.txt',mode='rt',encoding='utf-8') as f:
# f.seek(6,0)
# msg=f.read(1)
# print(msg) # with open('a.txt',mode='rb') as f:
# f.seek(3,0)
# msg=f.read(3)
# print(msg.decode('utf-8')) # with open('a.txt',mode='rb') as f:
# msg=f.read(3)
# # print(msg.decode('utf-8'))
# print(f.tell())
# # f.seek(6,0)
# f.seek(3,1)
# msg1=f.read(3)
# print(msg1.decode('utf-8')) # with open('a.txt',mode='rb') as f:
# msg=f.read(3)
# # print(msg.decode('utf-8'))
# print(f.tell())
# # f.seek(6,0)
# f.seek(3,1)
# msg1=f.read(3)
# print(msg1.decode('utf-8')) # with open('a.txt',mode='rb') as f:
# # f.seek(0,2)
# # print(f.tell())
# f.seek(-3,2)
# msg=f.read(3)
# print(msg.decode('utf-8')) # with open('access.log',mode='rb') as f:
# f.seek(0,2) # 当前位置是147bytes
#
# while True:
# line=f.readline() # 当前位置是196bytes
# # print(f.tell())
# if len(line) == 0:
# # 没有新的一行内容追加进来
# pass
# else:
# # 有新的一行内容追加进来
# print(line.decode('utf-8'),end='') # with open('access.log',mode='rb') as f:
# f.seek(0,2) # 当前位置是147bytes
#
# while True:
# line=f.readline() # 当前位置是196bytes
# if len(line) != 0:
# print(line.decode('utf-8'),end='') with open('a.txt',mode='r+t',encoding='utf-8') as f:
f.truncate(6)
# with open('c.txt','r+t',encoding='utf-8') as f:
# f.seek(13,0)
# # f.write('在老男孩')
# f.write('h') # 修改文件的方式一:
# 1 将文件内容由硬盘全部读入内存
# 2 在内存中完成修改
# 3 将内存中修改后的结果覆盖写回硬盘 # with open('d.txt',mode='rt',encoding='utf-8') as f:
# all_data=f.read() # print(all_data,type(all_data)) # with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write(all_data.replace('alex','dsb')) # 错误的做法
# with open('d.txt',mode='rt',encoding='utf-8') as f1,open('d.txt',mode='wt',encoding='utf-8') as f2:
# all_data=f1.read()
# f2.write(all_data.replace('dsb','alex')) # 修改文件的方式二:
# 1 以读的方式打开源文件,以写的方式打开一个临时文件
# 2 从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
# 3 删掉源文件,将临时文件重命名为源文件名
# import os
#
# with open('d.txt',mode='rt',encoding='utf-8') as read_f,open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f:
# for line in read_f:
# write_f.write(line.replace('alex','dsb'))
#
# os.remove('d.txt')
# os.rename('.d.txt.swap','d.txt') # 方式一:
# 优点: 在文件修改的过程中硬盘上始终一份数据
# 缺点: 占用内存过多,不适用于大文件 # 方式二:
# 优点: 同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
# 缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘,
十二 作业
python基础04day的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
随机推荐
- 搜狐视频 登录 md5 加密破解
这是一个简单的md5加密,可以学习一下js加密的破解流程,当一个入门级的教程 第一步:请求抓包 password是32位的字母和数字组合,猜测可能是md5加密,我们md5在线工具上试一下 发现我们的猜 ...
- vue-router路由传递参数 + get传值query获取
[步骤] (1)路由配置 或者 (2)传递参数 或者 (3)接收传递参数 或者 [二]步骤小结 [三]参数形式 (1)上面这种是/100形式传递过去 (2)另外还有?count=100的格式,这便是g ...
- 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法
TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...
- 进程及Python实现
进程杂谈 #进程就是正在执行的一个过程,是对正在运行程序的一个抽象 #进程由程序.数据集和进程控制块(最重要的,进程切换 状态如何保存,恢复和记录)组成 """ 进程调度 ...
- .Net反射-基础1-Assembly、Type
Assembly:封装程序集信息,可以动态加载程序集 获取Assembly的几种方式: 1.var ass1 = Assembly.Load("ClassLibrary1");// ...
- 【Tomcat】系统找不到指定的路径
确认一下端口防火墙是否开放 没开放就开一下:firewall-cmd --zone=public --add-port=9080/tcp --permanent 然后重启: firewall-cmd ...
- 关于时间排序在ios中失效的处理方法
上个月公司做项目的时候在列表排序的时候产品加了一个需求,通过点击量,发布时间,评论量进行筛选的一个需求. 一开始在电脑上测试基本没问题,然后我也就放下了这个按耐不住的小心脏,然后在完成所有模块后 sh ...
- 获取最新的中国IP的脚本,给ROS可以使用的脚本
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latestecho "/ip firewall address-li ...
- 20165230田坤烨网络对抗免考报告_Windows系统提权
目录 KERNEL EXPLOITATION 服务攻击: DLL劫持 攻击 不安全的服务权限 探测 unquoted path未被引号标记的路径 探测 攻击 服务注册表键 探测 攻击 Named Pi ...
- 如何使用 Django中的 get_queryset, get_context_data和 get_object 等方法
原文: https://blog.csdn.net/HH2030/article/details/80994274