python学习笔记(五)深拷贝浅拷贝,文件和目录
来源:互联网 发布:系统数据恢复 编辑:程序博客网 时间:2024/05/22 06:06
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 支持所有的换行符号。“\r” "\n" "\r\n"例子:写入
#/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 将文件指针移到 当前位置+偏移量处FileObject.flush() 提交更新,将缓冲写到文件中去选项 = 2 将文件指针移到 末尾 - 偏移量处例子:查找import refp = file('1.txt','r')count = 0for 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 refp = 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)
0 0
- python学习笔记(五)深拷贝浅拷贝,文件和目录
- Python学习笔记之浅拷贝和深拷贝
- [笔记]Python深拷贝和浅拷贝
- Python学习笔记(九)—Python中的赋值、浅拷贝和深拷贝(含图)
- python第三方库系列之五--拷贝copy库(深拷贝和浅拷贝)
- iOS学习笔记--浅拷贝和深拷贝——拷贝集合类(Copying Collections)
- python学习笔记——浅拷贝与深拷贝
- Python学习笔记——深拷贝与浅拷贝
- Python学习笔记_浅拷贝,深拷贝
- VS2010 C++ 学习笔记(五) 析构函数 深拷贝浅拷贝 小练习
- [Python]copy模块学习 -- 深拷贝和浅拷贝
- C#基础知识(五)浅拷贝和深拷贝
- C 字符串浅拷贝和深拷贝 学习笔记
- Python浅拷贝和和深拷贝
- python 的深拷贝和浅拷贝
- Python深拷贝和浅拷贝
- Python的浅拷贝和深拷贝
- python 浅拷贝和深拷贝
- 关于在IE-8下 button的背景图片不能正确显示的问题
- 简单文件系统实现
- 用jQuery合并表格中相同文本的相邻单元格
- BOOM BOOM:“只需触控一下”的扬声器
- ARM的cache和写缓冲器(write buffer)
- python学习笔记(五)深拷贝浅拷贝,文件和目录
- 谷歌搜索技巧(1)
- Nodejs对MongoDB模糊查询
- MapReduce----线性最小二乘(线性回归)
- codeforces 414 b
- 华中科技大学2002___考研计算机_复试上机
- 让hadoop远程调试飞
- java关于日期
- Android反编译(以网易新闻为例)