5岁自学python编程-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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值