python2基础学习(四)——浅拷贝与深拷贝、文件与目录、异常处理

本笔记未加整理,占供自己查看

目录

一、浅拷贝和深拷贝

二、文件与目录

三、异常处理


一、浅拷贝和深拷贝

 

    >>>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('抛出异常')

    
    
    
    
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值