今日内容

  深浅拷贝

  文件操作

内容回顾及补充

1.内容回顾

  计算机基础

  编码

  语法

    if/while/for

  数据类型

  type/id/range

  运算符

2.面试题

  a.公司线上的系统用的是什么?

  b.py2与py3的区别

  c.运算符

  d.is与==d的区别

  5.列举python的数据类型中都有哪些方法?

今日内容

1.深浅拷贝

  浅拷贝copy.copy():只拷贝第一层。

  深拷贝copy.deepcopy():拷贝嵌套层次中的所有可变类型。

  a.针对int+str+bool,都数据不可变的数据类型,理论是都是开辟一个新的存储空间,但由于小数据池的原因,深浅拷贝都使用同一个内存地址,请注意;

  b.针对list+set+dic

  深拷贝只有在嵌套中存有可变类型的情况下发挥作用。

  浅拷贝:只复制第一层,元素的值指向源地址。

  深拷贝:完全拷贝。

  c.特殊情况

  对于元组是不可变数据类型,在没有嵌套的情况下,深浅拷贝都不会重新开辟新的内存地址;但是如果里面存在由可变元素,就是重新开辟新的内存地址。

2.文件操作

  a.打开

    r:只能读

    w:只能写,再写之前会先清空文件,如果文件不存在,会直接创建,如果存在就清空

    a:只能追加,即只能写,如果文件不存在,也会创建

  注意:r模式下:如果文件不存在就报错;w默认下:如果文件不存就创建,存在就先清空;a模式下,如果文件不存在就创建,不能读取文件内容;

    r+:可读可写

      读:默认从0的光标位置开始读,也可以通过seek调整光标的位置(seek是按字节计算的);

      写:从光标所在的位置开始写,也可以通过seek调整光标的位置(注意:当光标后边还有内容,写会覆盖光标后边的内容

    w+:先写后读

     读:默认光标永远在写的后边或是0(还没有开始写东西),也可以通过seek调整光标的位置;

     写:先清空文件,然后开始写内容

    a+:可追加可读

     读:默认光标永远在文件内容的最后边,也可以通过seek调整光标的位置,然后再去读取;

     写:永远写在最后边,不管光标怎么移动

  b.操作

    读:read()/read(2)【里面的数据表示的是字符】/readlines()

    写:write

# ###################################### 读操作
# file_object = open('log.txt',mode='r',encoding='utf-8') # 读取文件的所有内容到内存
# data = file_object.read() # 从当前光标所在的位置向后读取文件两个字符
# data = file_object.read(2) # 读取文件的所有内容到内存,并按照每一行进行分割到列表中。
# data_list = file_object.readlines()
# print(data_list) # 如果以后读取一个特别大的文件 (**********)
# for line in file_object:
# line = line.strip()
# print(line) # file_object.close()

  c.关闭 close

3.关于seek()使用

  seek(n)光标移动到n位置,注意:移动单位是byte即字节,因此如果是utf-8的中文部分要是3的倍数

  通常我们使用seek都是移动到开头或者结尾

  移动到开头:seek(0,0) 可以看做成seek(0)

  seek(6)这种如果是单数并且不是0的就是按照字节来移动光标

  移动到结尾:seek(0,2)  

  seek的第二个参数表示的是从哪个位置进行偏移。默认是0,表示开头;1表示当前位置;2表示结尾。

4.关于tell()使用

  使用tell()可以帮我们获取当前光标在什么字节位置 

5.关于truncate()使用

  删除光标后边的所有内容

  如果想做截断操作,就需要先移动光标,将光标移动到你想要截断的位置,然后再进行截断。

  关于truncate(n),如果给出了n,就从n开始截断;如果不给指定n,就从当前位置开始截断,后面的内容将被删除。

练习:

file = open(file = 'test.txt',mode='w',encoding='utf-8')
file.write("股票型基金")#写入"股票型基金"字符
file.seek(12)#光标移动到第12/3个字节位置,"基"字后面
file.truncate()#删掉光标即"基"字后面的所有内容
file.close() file = open(file = 'test.txt',mode='r+',encoding='utf-8')
content=file.read(3)#读取3个字符
print(content) #本次将打印出"股票型"
file.seek(3) #光标移动到第3/3个字节位置,"股"字后面
print(file.tell())#本次打印光标在3个字节位置
file.truncate()#将"股"字后面的内容全部删掉
file.flush() content2=file.read() #当前光标在"股"字后边,后边没有什么任容
print(content2) #本次打印为空 file.seek(0) #将光标移动到文件头部
content3=file.read() #读取文件中的所有内容,即"股"字
print(content3) #本次打印一个"股"字
file.close() # 输出结果:
# 股票型
# 3
#
# 股

20200105--python学习第七天的更多相关文章

  1. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  2. Python学习第七课

    Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...

  3. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  4. python学习第七天 -- dict 和set

    今天主要学习关于python 的dict(全称dictionary)和set.dict的用法跟javascript 中map表类似,key + value结构语言.而set,准确来说,只是key的集合 ...

  5. Python学习笔记七

    面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...

  6. Python学习(七)面向对象 ——类和实例

    Python 面向对象 —— 类和实例 类 虽然 Python 是解释性语言,但是它是面向对象的,能够进行对象编程.至于何为面向对象,在此就不详说了.面向对象程序设计本身就很值得深入学习,如要了解,请 ...

  7. python学习笔记七 初识socket(进阶篇)

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  8. python学习笔记七--数据操作符

    一.Python表达式操作符及程序:

  9. python学习笔记(七)、异常

    在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...

  10. python学习第七篇——字典访问键与值

    此程序的目的在于,正确而简单的访问字典的键与值 favorite_languages={ 'jen':['python','c'], 'sarah':['c'], 'edward':['ruby',' ...

随机推荐

  1. python的list()函数

    list()函数将其它序列转换为 列表 (就是js的数组). 该函数不会改变   其它序列 效果图一: 代码一: # 定义一个元组序列 tuple_one = (123,','abc') print( ...

  2. ipynb 文件转 py

    前言 好多机器学习的文件都是ipynb的格式,如果想用其他编辑器的需要转为py的格式 命令: jupyter nbconvert --to script *.ipynb jupyter: pip3 i ...

  3. 倍增ST应用 选择客栈(提高组)

    重磅例题!ST表应用!提高组Getting! 1125: B15-倍增-习题:选择客栈[ST表应用] 时间限制: 1 Sec  内存限制: 128 MB提交: 35  解决: 12[提交] [状态] ...

  4. Springboot引入本地jar时打包

    在项目的开发过程中有时我们需要引入我们本地的jar包,这些jar包没有存在maven仓库中 ,这时没有办法通过pom文件直接引入,在开发过程中我们可以通过add as library的方式,可以在开发 ...

  5. 自定义博客cnblogs样式的必备前端小知识——js、jq

    JQ.JS相关小知识 任意元素自动点击 $(".editicon").trigger('click') 添加子元素 append() - 在被选元素的结尾插入内容 prepend( ...

  6. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  7. 详细解析Redis中的布隆过滤器及其应用

    欢迎关注微信公众号:万猫学社,每周一分享Java技术干货. 什么是布隆过滤器 布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它可以告 ...

  8. python类属性和实例属性(类变量和实例变量)

    在类中,根据变量定义的位置不同,以及定义的方式不同,类属性又可以细分为以下三种类型: 类体中,所有函数之外:类属性(类变量) 类体中,所有函数内部,以"self.变量名"的方式定义 ...

  9. [bzoj4443] [loj#2006] [洛谷P4251] [Scoi2015]小凸玩矩阵

    Description 小凸和小方是好朋友,小方给小凸一个 \(N \times M\)( \(N \leq M\) )的矩阵 \(A\) ,要求小秃从其中选出 \(N\) 个数,其中任意两个数字不能 ...

  10. 用Kolla在阿里云部署10节点高可用OpenStack

    为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...