2019.4.4 S21  day07笔记总结

一、深浅拷贝

  • 1.copy.copy()     浅拷贝

    deep.copy()    深拷贝

  • 2.一般情况

    • 1.str/int/bool 是不可变类型,他们的深浅拷贝都是一样的,就是在内存中新开辟空间来存储。

      应该每次都拷贝一份,但由于小数据池,未拷贝,所有存储地址一样。

    • 2.list/dict/set 是可变类型

      • 浅拷贝:只拷贝到第一层(即空壳,里面元素的地址不会改变。)

      • 深拷贝:拷贝所有数据(可变的)(找到所有可变层的数据层拷贝一份,里面可变层的地址也会改变。

      • 应该每次都拷贝一份,地址不一样(但由于小数据池,未拷贝)。

      • 只有出现嵌套时,深拷贝才有意义,没有时就和浅拷贝的意义一样(只拷贝第一层)。

      • 总结:浅拷贝:只拷贝到第一层

        深拷贝:拷贝嵌套层次中所有的可变类型(可变就拷贝,不可变就不拷贝)。

  • 3.特殊情况

    a.元组不可变

    例:v1 = (1,2,3)

    imfort copy

    v2 = copy.copy(v1)

    print(id(v1),id(v2))   # v1、v2地址一样

    v3 = copy.deepcopy(v1)

    print(id(v1),id(v3))   # v1、v3地址一样

    b.元组不可变,但元组中的列表/字典/集合都是可变的,元组中就存在了可变类型。

    例:v1 = (1,2,3,[1,2,3],4)

    imfort copy

    v2 = copy.copy(v1)

    print(id(v1),id(v2))   # v1、v2地址一样

    v3 = copy.deepcopy(v1)

    print(id(v1),id(v3))   # v1、v3地址不一样

    元组中有可变的,深拷贝拷贝到可变层。

    总结:拷贝只针对可变类型:再创造一份

    不可变类型不会拷贝(再创造一份出来,都是用同一个地址~同时指向一个地址)

二、文件操作

1.打开

  • 1.读取 r

    打开文件

    file_object = open('log.txt',mode = 'r',encoding = 'utf-8')

    '#  log.txt' 文件路径   encoding = 'utf-8' 存储时的方式,用什么方式存储就用什么方式读取

    读取内容

    content= file_object.read()

    print(content)

    关闭文件

    file_object.close()

    r 只读不能写,文件不存在则报错。

  • 2.写入 w

    打开文件

    file_object = open('log.txt',mode = 'w',encoding = 'utf-8')

    写入内容

    file_object.write('李忠伟')

    关闭文件

    file_objet.close()

    w 只写不能读

    w 要慎重使用,使用 w 打开文件时是先清空文件再写入内容的。一般用于新建文件(文件不存在则新建)。

  • 3.追加 a

    打开文件

    file_object = open('log.txt',mode = 'a',encoding = 'utf-8')

    写内容

    file_object.write('你好')

    关闭文件

    file_objet.close()

    a 只追加不能读,只在文件内容的最后面追加。

    文件不存在则新建

  • 4.可读可写 r+

    打开文件

    file_object = open('log.txt',mode = 'r+',encoding = 'utf-8')

    file_object.seek(3)     # 把光标移到第3个字节的位置

    file_object.write('999')

    读取内容

    content= file_object.read()

    print(content)

    file_object.write('666')

    关闭文件

    file_object.close()

    1.读取

    2.写入时:根据光标的位置,从当前光标位置开始进行写入操作(可能会将光标后其他的文字覆盖)

  • 5.可读可写 w+

    file_object = open('log.txt',mode = 'w+',encoding = 'utf-8')

    data = file_object.read()

    print(data)   # 文件是空的

    file_object.write('alex')   # a

    file_object.seek(0)         #  b

    file_object.read()           #  c

    '# a+b+c这三步:a 写完后光标在最后面,想要进行 c 读取,需要在 c 前加入 b 将光标跳到0

    print(data)

    file_object.close()

    写入时会将文件清空,读取时需要调整光标的位置。

  • 6.可读可写 a+

    file_object = open('log.txt',mode = 'a+',encoding = 'utf-8')

    file_object.seek(0)

    data = file_object.read()

    print(data)

    file_object.seek(0)

    file_object.write('666')

    file_object.close()

  • 7.总结:

    • r 只能读  (* *)

    • w 只能写   (* *)

    • a  只能追加    (*)

    • r+

      读:默认从0的光标开始读,也可以通过seek调整光标的位置。

      写:从光标所在的位置开始写,也可以通过seek调整光标的位置。

    • w+

      读:默认光标永远在写入的最后或0(打开清空了还没写入时在0的位置),也可以通过seek调整光标的位置。

      写:先清空

    • a+

      读:默认光标在最后,也可以通过seek调整光标的位置,然后再去读取。

      写:永远写到最后

2.操作

  • 1.读操作

    file_object = open('log.txt',mode = 'r',encoding = 'utf-8')

    data = file_object.read()         # 读取文件的所有内容到内存

    data = file_object.read(2)       # 从当前光标所在的位置向后读取文件两个字符

    data_list = file_object.readlines()      # 读取文件的所有内容到内存,并按照每一行进行分割到列表中。 (每行结尾会隐藏着一个换行符 \n)

    如果以后读取一个特别大的文件:

    方式一:start = 0

    while True:

    data = file_object.read(2)

    print(data)

    file_object.close()   # 最后一直在循环空,终止条件不好设定。

    方式二:for line in file_object:

    line = line.strip()  # 打印完后每行都存在一个换行符,strip 不但能去除空白,也能去除换行符\n

    print(line)       (*****)

  • 2.写操作

    file_object = open('log.txt',mode = 'w',encoding = 'utf-8')

    file_object.write('你好')            #  '你好小黑'写在一行

    file_object.write('你好\n')         #  '你好' 与 '小黑' 写成两行

    file_object.write('小黑')

    file_object.close()

    写完后一定要记得关闭(close)文件,如果没关闭就相当于写的东西直接到内存了。

    关闭文件(close)就强制将内存刷到硬盘上了

  • 总结:文件操作和数据类型的结合使用

python day07笔记总结的更多相关文章

  1. Web Scraping with Python读书笔记及思考

    Web Scraping with Python读书笔记 标签(空格分隔): web scraping ,python 做数据抓取一定一定要明确:抓取\解析数据不是目的,目的是对数据的利用 一般的数据 ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  4. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  5. python datetime笔记

    python datetime笔记 http://mint-green.diandian.com/post/2011-09-09/4892024 获取当前时间,并通过字符串输出. 格式为:%Y-%m- ...

  6. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  7. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  8. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  9. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

随机推荐

  1. Share Today

    当问[一生中最大的错误是什么?]时,佛陀回答: 最大的错误就是你以为你还有时间 时间是免费的也是无价的 你无法拥有 但可以花费 而一旦失去 就无法挽回 一般人一生有78年 我们有28.3年在睡觉 几乎 ...

  2. 关于Asset Library核心功能的一些计划

    Asset Library是公司计划中的一个网站,用于存放图像,视频,三维文件等资产,在之前的一个多月中我写完了该网站的后台及部分前端,现在就剩最后一部分了,这也是最棘手最核心的部分,就是在网页上快速 ...

  3. 踩坑rosbag --clock

    将rosbag的数据feed给lego-loam,输出地图.另外写了一个滤波节点,订阅地图,进行滤波操作,再发布出来. 由于输入给lego-loam的数据来自于rosbag,所以需要rosbag提供时 ...

  4. kafka 暂停消费

    1.代码实现 kafkaListener 需要指定id,例如这里是:full-part-id. @KafkaListener(topics = "part-full-topic", ...

  5. Elasticsearch-6.7.0系列(一)9200端口 .tar.gz版本centos7环境--下载安装运行

    https://www.elastic.co/guide/index.html(推荐)        ES官方英文原版文档,一般会更新到最新版本 https://www.elastic.co/cn/d ...

  6. 学习笔记《Java多线程编程实战指南》四

    JAVA线程同步机制 线程同步机制:是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标.java平台提供的线程同步机制包括锁.volatile关键字.fina ...

  7. js实时显示鼠标坐标

    <!DOCTYPE html><html><head>    <meta charset="utf-8">    <title ...

  8. 亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用

    最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程.所以自己总结一下,以供大家学习! 一.亚马逊E ...

  9. LeetCode 791. Custom Sort String

    题目链接:https://leetcode.com/problems/custom-sort-string/description/ S and T are strings composed of l ...

  10. jquery中对小数进行取整

    var uu=Math.floor(5.36) 向下取整 结果为5 var uu=Math.floor(5.88) 结果为5 Math.ceil(5.33) 向上取整,结果为6 Math.round( ...