今日内容

  深浅拷贝

  文件操作

内容回顾及补充

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. Node: 使用nrm管理npm源

    一.简介 npm是一款非常好用的包管理工具,在前端开发中很多时候都会使用npm安装其他包文件.但是,npm安装某些包时有时会安装地很慢,这是因为npm管理的源中有些是国外的,包下载的时候需要花费很多时 ...

  2. border-radius属性失效了Ծ‸Ծ

    .btn-circle { width: 30px; height: 30px; text-align: center; padding: 4px ; font-size: 16px; font-we ...

  3. AVR单片机教程——串口发送

    本文隶属于AVR单片机教程系列.   到目前为止,我们的开发板只能处理很小量的数据:读取几个引脚电平,输出几个LED,顶多用数码管显示一个两位数字.至于输入一个指令.输出一条调试信息,甚至用scanf ...

  4. 网络通信-基本概念:网络、IP地址、端口、socket

    目录 网络通信 1 网络 1.1 网络定义 1.2 使用网络的目的 1.3 总结 2 IP地址 2.1 ip地址的作用 2.2 ip地址的分类 3 端口 3.1 什么是端口 3.2 端口号 3.3 端 ...

  5. RabbitMQ入门(三)订阅模式

      在之前的文章RabbitMQ入门(二)工作队列中,我们创建了一个工作队列.工作队列背后的假设是每一项任务都被准确地传送至一个worker.在本文中,我们将会做一些不同的事情--我们将会把一个消息发 ...

  6. 投入OJ的怀抱~~~~~~~~~~

    OpenJudge C20182024 信箱(1) 账号 修改设定 退出小组 管理员 frank 林舒 Dzx someone 李文新 公告 11-05 程序设计与算法(大学先修课) 成员(61910 ...

  7. 创建dynamics CRM client-side (十一) - 管理和关联所有的JS文件

    代码管理是一个无法避免的问题. 前面我也建议了大家每一个entity都应该拥有自身的js. 但是如果我们有一些global的function, 我们应该怎样去部署到每一个entity中呢? 我这里使用 ...

  8. Ubuntu固定多个静态ip

    步骤: 1.sudo vim /etc/network/interfaces 加入下列内容 auto eth0#此处查看自己的ip信息是eth0还是eth1等等 iface eth0 inet sta ...

  9. Mybatis框架配置讲解以及使用

    1.什么是Mybatis MyBatis 是一款优秀的持久层框架, 它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.·MyB ...

  10. MCMC&Gibbs sampling

    Note of Markov Chain Monte Carlo and Gibbs Sampling :  http://pan.baidu.com/s/1jHpWY1o 序:A major lim ...