一、文件操作

1,读文件

   在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如:

#coding:utf-8fn='test1.py'fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下pyprint 'reading pos:',fp.tell()r=fp.read(20) #读取文件内容返回字符串print 'have read:\"'+r+'\''print 'reading pos:',fp.tell()print fp.read()fp.close()

2,写文件

   如果想将某些内容写入文件,可以以'w'写的方式打开文件(如果文件不存在会创建),并且清空文件之前的内容。

fw='test.txt' fp=open(fw,'w') fp.write('www.google.com') fp.close()

3,读写文件r+,w+

   二者区别在于:r+是必须针对已存在的文件;w+可以创建未存在的文件。

 fn='rplus.txt' fp=open(fn,'w+')     r=fp.read(12)      print r      fp.close()

4,追加写入文件a

 ‘w'写模式打开的文件只能把内容写入文件,原有内容将被清除,若想保留,则用‘a'追加写模式。

fn='rplus.txt'fp=open(fn,'w+')fp.write('aaaaa\n')fp.close()fa=open('rplus.txt','a')fa.write('bbbbb\n')fa.close()fa=open(fn,'r')r=fa.read()print rfa.close()

二,格式化读写文件

1,格式化写文件

   调用write函数,使用格式化控制符来格式化写入字符串。

fn='wformat.txt'fw=open(fn,'w')fw.write('%10s\t %3s\t %6s\n'%('name','age','sex'))fw.write('%10s\t %3s\t %6s\n'%('张三',78,'male'))fw.write('%10s\t %3s\t %6s\n'%('李四',50,'male'))fw.write('%10s\t %3s\t %6s\n'%('王五',80,'male'))fw.write('%10s\t %3s\t %6s\n'%('张强',90,'female'))fw.close()

2,读成列表

   文件的readlines函数可以将文本文件的若干行文本一一映射成列表的若干项,即文本文件的每一行映射成列表的一个数据项,每个数据项都是字符串。

fr=open('templist.txt','r')print fr.readlines()fr.close()

结果如下:

>>>[' aaaaaaaa\n', ' bbbbbbbb\n', ' cccccccc']

3,读成一行文件

   调用readline函数读一行内容,而read函数是一次性将文件的内容全部读回。另外,可以用strip函数去掉\n和空格。

fr=open('templist.txt','r')print fr.readline().strip().strip('\n')print fr.readline().strip().strip('\n')print fr.readline().strip().strip('\n')fr.close()

结果如下:

>>>aaaaaaaabbbbbbbbcccccccc

4,split格式化数据

fr=open('wformat.txt','r')line1=fr.readline()print line1line2=fr.readline()print line2print line2.split('\t')fr.close()

结果如下:

>>>      name	 age	 sex      张三	 78	 male[' \xd5\xc5\xc8\xfd', ' 78', ' male\n']

读取文件(格式化)的内容:

fr=open('wformat.txt','r')while (1==1):    line=fr.readline()    if(line==''):        break    else:        print linefr.close()>>> ================================ RESTART ================================>>>      name	 age	 sex      张三	 78	 male      李四	 50	 male      王五	 80	 male      张强	 90	 female>>>

5,读写子目录文件

   只需指定文件时描述好路径即可,但是注意两点:1)转义字符的问题;2)不能创建文件夹,文件夹必须预先存在。

fn='c:\\test.txt' fp=open(fn,'w+') fp.write('www.python.com') fp.close()

三,字典及其基本操作

1,字典定义

   字典:由一对称之为键和值构成,用逗号间隔起来,用花括号括起来就构成了字典。语法结构:

                dict_name={key:value,key:value,key:value,……}

   字典的数据项的值可以是字典,列表等数据类型。

2,基础操作

1)字典长度:

   len函数可以测得字典的数据项个数。

>>> dict1={'a':'b','name':'jeap',12:34}>>> len(dict1)3

2)元素值的访问:

   Python的字典可以通过键获取其所对应的值,而序列型数据字符串,列表则是通过index索引来获取的。字典的元素的关系比较稀松,是无序的。

>>> dict1={'a':'b','name':'jeap',12:34}>>> print dict1['a'],dict1[12]b 34

3)元素值的修改:

   通过键获取修改所对应的值。

 >>> dict1['a']='hello'>>> print dict1{'a': 'hello', 12: 34, 'name': 'jeap'}

4)元素项的删除:

   通过del 字典名[键]来删除字典里的元素。

>>> del dict1[12]>>> print dict1{'a': 'hello', 'name': 'jeap'}

5)元素项的增加:

   通过字典名[新键]赋值的方式在字典里新增一个数据项。

>>> dict1['QQ']='649414754'>>> print dict1{'a': 'hello', 'QQ': '649414754', 'name': 'jeap'}>>> dict1['sex']='F'>>> print dict1{'a': 'hello', 'QQ': '649414754', 'name': 'jeap', 'sex': 'F'}

6)in运算:

   判断某键是否存在于字典里。

>>> 'name' in dict1True>>> 'F' in dict1False

注意:in运算查找的是Key值,而非value值。

 

四,字典的相关函数

1)clear函数:清空字典数据项。

>>> print dict1{'a': 'hello', 'QQ': '649414754', 'name': 'jeap', 'sex': 'F'}>>> dict1.clear()>>> print dict1{}

2)copy函数:字典复制,与源对象间的关系是备份关系。

>>> dict1={'a': 'hello', 'QQ': '649414754', 'name': 'jeap', 'sex': 'F'}>>> dict2=dict1.copy()>>> print dict2{'a': 'hello', 'QQ': '649414754', 'name': 'jeap', 'sex': 'F'}

3)get函数:获取某键锁对应的值,等价于dict_name[键]

>>> dict1.get('QQ')'649414754'

4)keys函数:获取字典所有的key。

>>> dict1.keys()['a', 'QQ', 'name', 'sex']

5)values函数:获取字典所有的value。

>>> dict1.values()['hello', '649414754', 'jeap', 'F']

6)intems函数:获取字典所有的key-value。

>>> dict1.items()[('a', 'hello'), ('QQ', '649414754'), ('name', 'jeap'), ('sex', 'F')]

7)update函数:更新字典里某键(key)的键值(value),如果更新的key原字典没有,则update就向字典里添加一项数据。

>>> new={'age':32}  #原字典没有,新增>>> add={'name':'张三'} #原字典存在,更新'jeap'为'张三'>>> dict1.update(new)>>> dict1.update(add)>>> print dict1{'a': 'hello', 'QQ': '649414754', 'name': '\xd5\xc5\xc8\xfd', 'age': 32, 'sex': 'F'}

8)dict函数:创建字典。

   下面举例三种创建字典的方法:

>>> d0=dict() #创建空字典>>> print d0{}>>> d1=dict(name='zhangsan',QQ='123456789',age=23)#通过赋值创建字典>>> print d1{'QQ': '123456789', 'age': 23, 'name': 'zhangsan'}>>> val=['lisi','649414754',25]>>> print val['lisi', '649414754', 25]>>> key=range(1,4)>>> d2=dict(zip(key,val))#使用一对列表创建字典>>> print d2{1: 'lisi', 2: '649414754', 3: 25}

9)pop和popitem函数:pop方法通过键key获取其值value并从字典中删除该数据项;popitem函数则是随机移除一个数据项,返回值是元组。

>>> val=['Tom','Jack','Rose','John','Mark']>>> key=range(1,6)>>> dic=dict(zip(key,val))>>> print dic{1: 'Tom', 2: 'Jack', 3: 'Rose', 4: 'John', 5: 'Mark'}>>> dic.pop(2)'Jack'>>> dic.popitem()(1, 'Tom')>>> print dic{3: 'Rose', 4: 'John', 5: 'Mark'}

10)实践应用:字典和for循环遍历字典。

     i)通过in运算和键,来访问字典的值。

>>> key=range(1,6)>>> val=['Tom','Jack','Rose','John','Mark']>>> dic=dict(zip(key,val))>>> for x in dic: print dic[x] TomJackRoseJohnMark

     ii)通过items函数返回值为(key,value)元组组成的列表来访问。

>>> print dic.items()[(1, 'Tom'), (2, 'Jack'), (3, 'Rose'), (4, 'John'), (5, 'Mark')]>>> for (k,v) in dic.items(): print 'dic[',k,']=',v dic[ 1 ]= Tomdic[ 2 ]= Jackdic[ 3 ]= Rosedic[ 4 ]= Johndic[ 5 ]= Mark>>>

 五,小结

      本章主要介绍python开发的进阶知识,文件的基本操作,字典的相关概念,基本操作运算和相关函数,为以后实战应用做一个铺垫,本章存在的遗留问题是,如何调用不在同一目录文件下的.py自定义模块?按照书上的代码未能实现。