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)



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

  • 相关阅读:
    《代码整洁之道》三
    《代码整洁之道》二
    第五周总结
    第四周总结
    第三周总结
    第二周总结
    第一周总结
    课程总结
    周总结16
    河北省科技信息通用调查系统综合查询功能开发——Day9
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4737416.html
Copyright © 2011-2022 走看看