zoukankan      html  css  js  c++  java
  • python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童)


    深拷贝-浅拷贝


    浅拷贝就是对引用的拷贝(仅仅拷贝父对象)
    深拷贝就是对对象的资源拷贝

    普通的复制,仅仅是添加了一个指向同一个地址空间的”标签“,东西都是一样的。改变或者添加,复制出来的变量也会改变
    样例:
    >>> a=[1,2,3]
    >>> b=a
    >>> a
    [1, 2, 3]
    >>> b
    [1, 2, 3]
    >>> a[1]=0
    >>> a
    [1, 0, 3]
    >>> b
    [1, 0, 3]
    >>> a.append(4)
    >>> a
    [1, 0, 3, 4]
    >>> b
    [1, 0, 3, 4]

    浅拷贝

    要增加copy模块 import copy

    浅拷贝数据不会独立的在复制一份,仅仅是对引用的拷贝,每一个元素的id都是一样的

    样例:

    >>> import copy

    >>> a=[1,2,['a','b','c']]
    >>> b=copy.copy(a)
    >>> b
    [1, 2, ['a', 'b', 'c']]

    >>> id(a)
    48145736L
    >>> id(b)
    48123592L
    >>> id(a[0])
    30730152L
    >>> id(b[0])
    30730152L
    >>> a.append(0)
    >>> a
    [1, 2, ['a', 'b', 'c'], 0]
    >>> b
    [1, 2, ['a', 'b', 'c']]
    >>> a[2].append('d')
    >>> a
    [1, 2, ['a', 'b', 'c', 'd'], 0]
    >>> b
    [1, 2, ['a', 'b', 'c', 'd']]


    深拷贝

    仅仅用把copy.copy()改成copy.deepcopy()
    深拷贝会把全部的数据都单独的在拷贝一份

    文件的读写


    能够用open函数。或者file类

    open(name[, mode[, buffering]])
    file(name[, mode[, buffering]])
    fo = open("/code/1.txt")  #使用open函数
    print fo.read()
    fo.close()
    
    f1 = file("/code/1.txt")  #使用file类
    print f1.read()
    f1.close()
    

    mode
    r    仅仅读
    r+  读写。假设已经存在。则从文件指针位置写入
    w   写入,假设已经存在,先删除原文件,在又一次写入
    w+ 读写,假设已经存在,先删除原文件。在又一次写入
    a    写入。在文件末尾追加新内容
    a+  读写,在文件末尾追加新内容
    b    打开二进制文件。能够于r、w、a、+结合使用
    U   支持全部的换行符号。“ ” " "  " "

    样例:写入
    #/usr/bin//usr/bin/python2.7
    # -*- coding: utf-8 -*-
    fnew = open('/code/new.txt','w')
    fnew.write('Hello Python!!')  #这时2还没有真正的写到文件里去,仅仅是在缓冲中 。close或者flush后才写到文件里去
    fnew.close()
    

    文件对象方法


    String = FileObject.read([size])  读取,从文件指针開始读取,能够size指定读取多少
    String = FileObject.readline([size])  每次读取一行。并将文件文件指针到下一行
    List = FileOject.readlines([size])  返回一个列表,存放没一行的字符
    FileObject.next()  返回当前行,并将文件文件指针到下一行 与readline不同的地方是,readline把全部行读完后返回空字符串,next会发出警告

    FileObject.write(String) 写入
    FileObject.writelines(list)  多行写入。效率比write高,速度快

    FileObject.seek(偏移量,选项)
    选项 = 0 将文件指针移到 文件头部+偏移量处
    选项 = 1 将文件指针移到 当前位置+偏移量处
    选项 = 2 将文件指针移到 末尾 - 偏移量处
    FileObject.flush()  提交更新。将缓冲写到文件里去

    样例:查找
    import re
    fp = file('1.txt','r')
    count = 0
    for s in fp.readlines():
          li = re.findall('hello',s)
          if len(li)>0:
                count = count + len(li)
    print "Search "+str(count) + " hello"
    
    fp.close()

    样例:替换
    # -*- coding: utf-8 -*-
    import re
    fp = file('1.txt','r+')
    s=fp.read()
    fp.seek(0,0)
    fp.truncate()    #文件清空
    fp.write(s.replace('hello','hi'))
    fp.close()
    

    OS模块


    引入os模块 import os

    文件夹操作

    通过os模块来实现文件夹的创建,改动,遍历等
    创建文件夹(不能创建多级文件夹)  os.mkdir(path [, mode=0777])
    创建文件夹(能够创建多级文件夹)  os.makedirs(path [, mode=0777])
    删除文件夹(不能删除多级文件夹)  os.rmdir(path)
    删除文件夹(能够删除多级文件夹)  os.removedirs(path)
    列出文件夹 os.listdir(path) 
    获取当前文件夹  os.getcwd()
    切换文件夹  os.chdir(path)



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4737416.html
Copyright © 2011-2022 走看看