今日内容

  深浅拷贝

  文件操作

内容回顾及补充

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. nacos-docker安装nacos并配置数据库

    拉取nacos/nacos-server镜像 docker pull nacos/nacos-server 配置数据库(MySQL) 创建存储nacos配置的数据库 create database n ...

  2. 搭建自己的Online Judge

    前言 很多人对于做题有点厌烦,但是,如果让你出题给别人做那么可能会很有意思.可是,出题只能出在一些别人的OJ上,甚至只能在自己的Word文档里出.今天我教大家一个厉害点的,叫做搭建自己的Online ...

  3. Redis系列(二):Redis的5种数据结构及其常用命令

    上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...

  4. Java8 新特性(三) - 日期时间对象以及一些其他特性

    日期时间对象 关于日期时间的操作可以分为两种: 转换:与字符串的互相转换,与时间戳的互相转换 计算:计算两个时间点之间的间隔.时间点与时间段的计算(计算下周N.下个月D日.去年M月D日等等) Java ...

  5. KVM虚拟化基础

    关于虚拟化 什么是虚拟化 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器等),予以抽象. ...

  6. PowerDesigner配置Oracle数据库反向工程

    PowerDesigner配置Oracle数据库反向工程 作者:Jesai 贴吧:软件频道吧 1. 前言: PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与 ...

  7. [bzoj4568] [loj#2013] [Scoi2016] 幸运数字

    Description \(A\) 国共有 \(n\) 座城市,这些城市由 \(n-1\) 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正 ...

  8. 8、python运算符

    前言:本文主要介绍python中经常使用的6种运算符,分别是算术运算符.比较运算符.赋值运算符.逻辑运算符.身份运算符和成员运算符. (因为用法比较简单,这里只做介绍,有兴趣的可以自己敲代码运行一下) ...

  9. 机器学习环境配置系列六之jupyter notebook远程访问

    jupyter运行后只能在本机运行,如果部署在服务器上,大家都希望可以远程录入地址进行访问,这篇文章就是解决这个远程访问的问题.几个基本的命令就可以搞定,然后就可以愉快的玩耍了. 1.安装jupyte ...

  10. gerrit merge后不能提交问题

    需求:git 分支合并 问题:使用 git merge 在本地执行分支合并操作,然后想 push 到 gerrit 上评审入库,可是在提交时,提示:  ! [remote rejected] HEAD ...