一、文件处理

1.文件处理模式

r       以读方式打开

w      以写方式打开,
a      以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+    以读写模式打开 (参见 w )
a+    以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb    以二进制写模式打开 (参见 w )
ab    以二进制追加模式打开 (参见 a )
rb+   以二进制读写模式打开 (参见 r+ )
wb+  以二进制读写模式打开 (参见 w+ )
ab+  以二进制读写模式打开 (参见 a+ )

2.创建文件对象格式

对象名 = open(文件名,模式)

     只读: f = file(‘aaa.txt’,’r’)    #只读模式打开
            f.readline()          #查看文件内容
            f.close()           #关闭文件
     只写:  f = file(‘aaa.txt’,’w’)    #只写模式打开
            f.write(‘new-line’)      #写入内容,会覆盖
            f.close()
     追加:  f = file(‘aaa.txt’,’a’\n)   #追加模式打开,加换行符
            f.write(‘www’)        #写入内容
            f.close()

读取:

content = f.read(N)          # 读取N bytes的数据
content = f.readline()       # 读取一行
content = f.readlines()      # 读取所有行,储存在列表中,每个元素是一行。

写入:

f.write('I like apple!\n')      # 将'I like apple'写入文件并换行

关闭文件:

f.close()

二、字符串

1.概念:字符串是不可变的

所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小值、最大值)对字符串同样试用

2.字符串方法

·find:在一个字符串中查找子串.它返回子串最左端所在位置的索引,如果没有找到则返回-1

·join:它是split方法的逆方法,用来连接序列中的元素

·lower:不管一个字符串中是大写还是小写,它只返回小写的结果

·replace:把字符串中的某个元素替换并返回替换后的结果(所有匹配选项)

·split:它是join方法的逆方法,提供分隔符,将字符串分割成列表

·strip:返回去除两侧(不包括内部)空格的字符串

3.方法实例操作

(1)find:在一个字符串中查找子串.它返回子串最左端所在位置的索引,如果没有找到则返回-1

>>>a='Hello world'
>>>print a.find('world') #'w'的索引位置是6,所以是6
6

(2)join:它是split方法的逆方法,用来连接序列中的元素

>>>seq = ['1','2','3','4','5']
>>>b = '+'    #b为提供的分隔符,如果不提供分隔符就用空格作为分隔符
>>>print b.join(seq)
1+2+3+4+5

(3)lower:不管一个字符串中是大写还是小写,它只返回小写的结果

>>>a = 'Hello,World!'
>>>print a.lower()
hello,world!

(4)replace:把字符串中的某个元素替换并返回替换后的结果(所有匹配选项)

>>>a = 'This is a test'
>>>print a.replace('is','si')
Thsi si a test

(5)split:它是join方法的逆方法,提供分隔符,将字符串分割成列表

>>>a = '1+2+3+4+5'
>>>print a.split('+')
['1', '2', '3', '4', '5']

(6)strip:返回去除两侧(不包括内部)空格的字符串

>>>a = '  Hello,World!   '
>>>print a.strip()
Hello,World!


三、序列

1.概念:

序列是一组有顺序元素的集合

序列有两种:tuple(元组)和list(列表)

2.1列表

概念:建立之后可以增删改查

列表方法:

·append:在列表末尾追加新的对象

 insert:将对象插入到列表中

·remove:移除列表中某个值的第一个匹配项

·count:统计某个元素在列表中出现的次数

·index:在列表中找出某个值的索引位置

·extend:在列表末尾一次性追加另一个列表中的多个值

·reverse:将列表中的元素反向存放

·sort:在原始位置对列表进行排序

(1)列出

#列出列表中的第一个元素
>>> name_list = ['zhao','qian','sun']
>>> name_list 
['zhao', 'qian', 'sun']
>>> name_list[0]                 
'zhao'

(2)append:在列表末尾追加新的对象

在列表最后一个元素后面追加一个元素
>>> name_list 
['zhao', 'qian', 'sun']
>>> name_list.append('li')   
>>> name_list
['zhao', 'qian', 'sun', 'li']

(3)insert:将对象插入到列表中

#插入到索引为1的元素后边
>>> name_list.insert(2,’110’)  
>>> name_list
['zhao', 'qian', '110', 'sun', 'li']

(4)remove:删除

>>>name_list 
['qian', '110', 'sun', 'li']
>>>name_list.remove(‘zhao’)
>>> name_list
['qian', '110', 'sun', 'li']

(5)count:统计某个元素出现的次数

>>>name_list
['zhao', 'qian', 'sun', 'li',’zhao’]
>>>name_list.count(‘zhao’)   
2

(6)index:在列表中找出某个值的索引位置

>>> name_list
['zhao', 'qian', 'sun', 'li',’zhao’]
>>> name_list.index(‘qian’)    
1

(7)在知道字符串位置的情况下,截取

>>> name_list
['zhao', 'qian','sun', 'li',’zhou’,’wu’,’zheng’,’wang’]
>>>name_list [0:5]         #截取0-5行
['zhao', 'qian','sun', 'li',’zhou’,’wu’]

(8)在不知道字符串位置的情况下,截取

>>> name_list
['zhao', 'qian','sun', 'li',’zhou’,’wu’,’zheng’,’wang’]
>>>name_list[name_list.index(zhao):name_list.index(zhao)+4]  #从zhao开始截取四个包括zhao
['zhao', 'qian', 'sun', 'li']

  (9)extend:在列表末尾一次性追加另一个列表中的多个值

>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a.extend(b)
>>>print a 
[1,2,3,4,5,6]

(10)reverse:将列表中的元素反向存放

>>>a=[1,2,3]
>>>a.reverse()
>>>print a
[3,2,1]

(11)sort:在原始位置对列表进行排序

>>>a=[1,3,2,5,4]
>>>a.sort()
>>>print a
[1,2,3,4,5]

2.2元组

概念:一旦建立,元组的各个元素不可修改,不能增删改是只读的

元组方法

· cmp(tuple1, tuple2):比较两个元组元素
· len(tuple):计算元组元素个数
· max(tuple):返回元组中元素最大值
· min(tuple):返回元组中元素最小值
· tuple(seq):将列表转换为元组

(1)创建元组

>>>tuple = ('zhao','qian','sun')

(2)查看元组

>>> print tuple 
('1', '2', '3')

(3)删除整个元组,元组中的某个元素是不能删除的

>>> del tuple

注意:readlines 读所有行到数组中,xreadlines 也是,实现那种效果,但是前者比如数据量100万行,是不是返回100万的数组,后者会做些优化

2.3列表和元组的引用

(1)从开始打印到下标4       #不包括5

>>> name_list
['zhao', 'qian', 'sun', 'li', 'zhou', 'wu', 'zheng', 'wang']
>>> print  name_list[:5]
['zhao', 'qian', 'sun', 'li', 'zhou']

  (2)从下标2开始打印到最后  

>>> name_list
['zhao', 'qian', 'sun', 'li', 'zhou', 'wu', 'zheng', 'wang']
>>> print name_list[2:]
['sun', 'li', 'zhou', 'wu', 'zheng', 'wang']

      (3)打印从下标0到下标4,每隔2取一个元素   #不包括5

>>> name_list
['zhao', 'qian', 'sun', 'li', 'zhou', 'wu', 'zheng', 'wang']
>>> print name_list[0:5:2]
['zhao', 'sun', 'zhou']

四、字典


1、概念:

·快速定位的想要查的那个值,就是key:value,key是索引,根据key找到对应value

·键可以是数字、字符串甚至是元组

2.特点:

·是无序的

·键类型:字典的键不一定是整数数据,键可以是任意的不可变类型比如:浮点、字符串、元组

·自动添加:即使键起初在字典中不存在,也可以为它赋值,这样字典就会建立新的项

3.字典的基本操作

·len(d):返回d中项(键-值对)的数量

·d[a]:返回键(key)a对应的值(value)

·del d[a]:删除键为a的项(键值对)

4.字典的方法

·clear:清除字典中所有的项

·copy:返回一个相同键值对的新字典(这个方法实现的是浅复制)

·fromkeys:使用给定的键建立新字典,每个键对应的值是None

·get:如果要访问的值字典中不存在也不会报错

·items:将字典中所有的项以列表的方式返回

·pop:指定一个键,然后把这个键-值对从字典中删除

·popitem:弹出一个字典中随机的项(键值对),如果想一个接一个的删除项,这个方法就有效了.

·update:利用一个字典的项更新另一个字典(后者会替代前者)

5.实例

(1)clear:清除字典中所有的项

代码:
people = {'zhangsan':25,'lisi':18}
print people
print people.clear()
结果:
{'lisi': 18, 'zhangsan': 25}
None

(2)copy:返回一个相同键值对的新字典(这个方法实现的是浅复制)

代码:
people = {'zhangsan':25,'lisi':18}
print people
print people.copy()
结果:
{'lisi': 18, 'zhangsan': 25}
{'lisi': 18, 'zhangsan': 25}

(3)fromkeys:使用给定的键建立新字典,每个键对应的值是None

代码:
print  dict.fromkeys(['zhangsan','lisi'])
结果:
{'lisi': None, 'zhangsan': None}

(4)get:如果要访问的值字典中不存在也不会报错

代码:
people = {'name':'zhangsan','age':'25'}
print people
print people.get('salary')
结果:
{'age': '25', 'name': 'zhangsan'}
None

(5)items:将字典中所有的项以列表的方式返回

代码:
people = {'name':'zhangsan','age':'25'}
print people.items()
结果:
[('age', '25'), ('name', 'zhangsan')]

(6)pop:指定一个键,然后把这个键-值对从字典中删除

代码:
people = {'name':'zhangsan','age':'25'}
print people
print people.pop('name')
print people
结果:
{'age': '25', 'name': 'zhangsan'}
zhangsan
{'age': '25'}

(7)popitem:弹出一个字典中随机的项(键值对),如果想一个接一个的删除项,这个方法就有效了

代码:
people = {'name':'zhangsan','age':'25'}
print people.popitem()
结果:
('age', '25')

(8)利用一个字典的项更新另一个字典(后者替代前者)

代码:
people  = {'name':'zhangsan','sarlay':6000}
people2 = {'name':'zhangsan','sarlay':12000}
print people
print people2
print people.update(people2)
print  people
结果:
{'sarlay': 6000, 'name': 'zhangsan'}
{'sarlay': 12000, 'name': 'zhangsan'}
None
{'sarlay': 12000, 'name': 'zhangsan'}

(9)通过key找到value

代码:
people  = {'name':'zhangsan'}
print people['name']
结果:
zhangsan

(10)循环打印name_info中的key_value

代码:
#!/bin/env python
name_info { 
     'name' : 'zhai',     #逗号表示还有下一行
     'age'  :  18,
     'job'  :  'yunwei'
}
for i in name_info:
   print i, name_info[i]
结果:
  name zhai     
  age  18
  job  yunwei

(11)插入项(键值对)

>>> name_info['salary'] = 3000 
>>> name_info 
{'job': 'IT', 'salary': 3000, 'age': 29, 'name': 'zhai'}

(12)更改项(键值对)

>>> name_info['salary'] = 5000
>>> name_info 
{'job': 'IT', 'salary': 5000, 'age': 29, 'name': 'zhai'}

(13)指定一个键,超找有没有对应的项(键值对)

>>> name_info.has_key('job') #如果有返回True,如果没有返回False

(9)返回字典中所有的key

代码
dic = {'tom':11,'sam':57,'lily':100}
print dic.keys()
结果
['lily', 'sam', 'tom']

(14)返回字典中所有的value

代码
dic = {'tom':11,'sam':57,'lily':100}
print dic.values()
结果
[100, 57, 11]

6.列表和字典的区别

·字典

 - 查找和插入的速度极快,不会随着key的增加而增加

 - 需要占用大量的内存,内存浪费多

 - Key不可变

 - 默认无序

·列表

 - 查找和插入的时间随着元素的增加而增加

 - 占用空间小,浪费内存很少

 - 通过下标查询

 - 有序

五、set集合

1.特点:

 ·无序

 ·元素不重复

2.功能:

 ·关系测试:测试两组数据的关系

 ·去重

3.举例

 (1)

>>> name_set = {1,2,3,4,5}
>>> name_set
set({1,2,3,4,5})

 (2)添加

>>> name_set
set({1,2,3,4,5})
>>> a = name_set 
>>> a
set({1,2,3,4,5})
>>> a.add(100)
>>> a
set({1,2,3,4,5,100})

 (3)取出交集  #取出x y里都有的

>>> x = {1,2,3,4}
>>> y = {3,4,5,6}
>>> x & y 
set([3, 4])

  (4)并集     #合并,并且去重

>>> x = {1,2,3,4}
>>> y = {3,4,5,6}
>>> x | y 
 set([1, 2, 3, 4, 5, 6])

  (5)差集 

>>> x = {1,2,3,4}
>>> y = {3,4,5,6}
>>> x -y
set([1, 2])

  (6)对称差集  #把两个互相都有的去掉,把两个互相都没有的合在一起

>>> x = {1,2,3,4}
>>> y = {3,4,5,6}
>>> x ^ y
set([1, 2, 5, 6])

----------------------------------------------------------------------

练习:查询一个字符,如果文件中存在就打印出来,如果不存在则报错

[root@k8s-1 ~]# cat bbb.txt 
a 1111     
b 2222
c 3333
d 4444
e 5555
[root@k8s-1 ~]# cat 4.py 
#!/bin/env python 
#_*_ coding:utf-8 *_*
a = raw_input('输入查询的信息:')
f = file('bbb.txt','r')
for i in f.xreadlines():
  if a in i:
    print i
    break
  else:
    print '不存在这个参数'
    break
   #f.close()
测试:
[root@k8s-1 ~]# python 4.py 
输入查询的信息:1
a 1111     
[root@k8s-1 ~]# python 4.py 
输入查询的信息:y
不存在这个参数