本笔记未加整理,占供自己查看
目录
一、浅拷贝和深拷贝
>>>a=[1,2,3,'a','b','c']
>>>b=a
>>>id(a)
>>>id(b)
#a和b地址一样
>>>a.append('d')
>>>b
[1,2,3,'a','b','c','d'] //即a,b互相影响
import copy
>>>a = [1,2,3,['a','b','c']]
>>>c=copy.copy(a) copy模块有个copy方法
>>>id(a)
>>>id(c)
#a和c地址不一样
>>>a.append('d')
>>>a
[1,2,3,['a','b','c'],'d']
>>>c
[1,2,3,['a','b','c']]
事情还没有完
>>>id(a[0])
>>>id(c[0])
#a[0] 和 c[0] 地址一样
>>>a[3].append('d')
>>>a
[1,2,3,['a','b','c','d'],'d']
>>>c
[1,2,3,['a','b','c','d']]
深拷贝 : 完全独立出来
>>>d=copy.deepcopy(a)
>>>d
[1,2,3,['a','b','c','d'],'d']
>>>id(a[0])
>>>id(d[0])
#a[0] 和 d[0] 不一样 因为1,2,3 是不可变的
>>>id(a[3])
>>>id(d[3])
#a[3] 和 d[3] 不一样
二、文件与目录
文件的打开与创建
文件读取
文件写入
内容查找和替换
文件删除,复制,重命名
目录操作
案例: 目录分析器 杀毒软件 系统垃圾清理工具
python进行文件读写的函数是open或者file
file_handler=open(file,mode)
mode
r 只读
r+ 读写
w 写入,先删除源文件,在重新写入,如果文件不存在则创建
w+ 可读可写,先删除源文件,再重新写入,不存在在创建
a 写入,在文件末尾追加新内容,文件不存在则创建
a+ 读写,在文件末尾追加新内容,文件不存在则创建
b 打开二进制文件,可以与r,w,a,+结合使用
U 支持所有的换行符号,'\r','\n','\r\n'
>>>fo = open('/root/test.txt')
>>>fo.read() //读取文件
>>>fo.close() //关闭文件
>>>f1=file('/root/test.txt')
>>>f1.read()
>>>f1.close()
写数据
>>>f1 = open('test.txt','w')
>>>f1.write('good \n hello') //还在缓冲器,并没有立马写入
>>>f1.close() 关闭时则写入
先读取再写入 读取完指针已经指向最右边,所以是追加
直接写入 指针还在首位置,所以会覆盖原来的内容
文件对象方法
FileObject.close()
String=FileObject.readline([size])
Lis
>>>for i in open('test.txt')
print i #打印每一行数据
readline:
String =FileObject.readlines([size])
>>>open('test.txt')
>>>f1.readlines()
>>>
next:
f1.next()
write:
writeLines(List):
>>>l = ['one\n','two\n','three\n']
>>>f1 = open('\test.txt','a')
>>>f1.writelines(l)
seek(偏移量,选项) 指针移动
seek(0,0) 将文件指针移到开头
seek(0,2) 将文件指针移到末尾
seek(0,1) 从当前位置移
f1.flush() 更新缓存
文件查找和替换
os模块
import os
创建目录
os.mkdir('test.txt') //创建文件
os.makedirs('a/b/c') 创建a目录下的b目录下的c目录
删除目录
os.rmdir(path)
os.removedirs(path) //递归删除目录
os.listdir('.') //查看当前目录, 当前路径
os.listdir('/') //查看根下的目录,绝对路径
os.getcwd() //得到绝对路径
os.chdir('/') --> os.listdir('.') //切换到'/'目录
遍历目录
案例:系统垃圾清理小工具
方式: 递归函数
os.walk()
#!/usr/bin/python
#coding:utf8
import os
def dirList(path):
filelist = os.listdir(path)
for filename in filelist:
filepath = os.path.join(path,filename)
if os.path.isdir(filepath):
dirList(filepath)
print filepath
allfile=dirList('/root/.../testdir')
print allfile
g = os.walk(path) 返回一个生成器
g.next() 返回(path,dir,file)
for path ,dir,filelist in os.walk('/root/.../...'):
for filename in filelist:
os.path.join(path,filename)
作业:用递归遍历目录,用walk()遍历文件
文件名带有f字母全部删除
文件内容中含有abcd删除
三、异常处理
try:
statement();
except IOError,e:
print False,str(e)
except NameError,e:
//do something
finally:
try:
f.close()
except NameError,e:
pass
//do something #一定会执行
比如:文件关闭
raise TypeError('抛出异常')