python基础(二)

第一章 python对文件的处理

一、相关函数

1.open()函数

open函数以指定模式返回一个file对象,如: file_object = open(filename,access_mode=r,buffering=-1),默认是以r模式打开文件。

filename:表示要打开文件名(字符串),可以是绝对路径或相对路径

access_mode:文件打开的模式(字符串), 常用的模式有’r,w,a,不是很常用的还有’u’和’b

r’模式:以读方式打开,不能进行写操作,文件必须是已经存在的

r+’模式:以读写方式打开,文件必须是已经存在的

w’模式:以写方式打开,不能进行读操作,若文件存在,则先清空,然后重新创建;若不存在,则创建文件

w+’模式:以读写方式打开,若文件存在,则先清空,然后重新创建;若不存在,则创建文件

a’模式:以追加方式打开,不能进行读操作,把数据追加到文件的末尾;若不存在,则创建文件

a+’模式:以读写方式打开,把数据追加到文件的末尾;若不存在,则创建文件

b’模式:以二进制模式打开,不能作为第一个字符出现,需跟以上模式组合使用,如’rb,rb+’等,

u’模式:表示通用换行符支持,文件必须是已经存在的

buffering:表示访问文件采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,其他大于1的值表示使用给定值作为缓冲区大小,负数表示使用系统默认缓冲机制,默认是-1,一般使用系统默认方式。

2.read()函数 

read()readline()readlines()

read():读取指定数目个字节到字符串中,负数将读取至文件末尾,默认是-1

3.write(),writelines()函数

这两个方法都不会自动加上行结束符,需在写入数据前自己加上

4.seek(),tell()函数

seek():移动文件指针到不同的位置,可以指定偏移量和起始位置。起始位置0表示从文件头开始,1表示从当前位置开始,2表示从文件尾开始,默认是0.

tell():表示当前文件指针在文件中的位置,从文件头算起。

 

二、基础操作举例

1.创建文件:

f=open('test.txt','w') 
f.write("Hello world!")
f.flush()

f.close()

python文件创建的语法格式:变量=open(‘文件名称’,‘写’)

python文件的创建语法稍微有了点变化,f=后面跟的是open而非以前的file。这个w的作用是,如果没有文件就创建文件,如果有就将里面的 内容删除掉重新写入。

我们写完内容之后,信息是缓存在内存里面的,只有放文件关闭用f.close()关闭文件,f.closed是状态,内容才会写到文件中去,或者用f.flush()强制刷新将内存中的内容写入到文件中去。

2.向文件增加内容

f=open('test.txt','a')
f.write('\n'+"append to the end")
f.closed

a为向文件中插入,插入的内容为:append to the end,为什么有\n呢,这个\n为换行符,默认追加是不换行的,我们开头换行外加用+将换行与后面的内容连接起来。

 

3.遍历文件内容

f=open('test.txt')
for line in f.readlines():
      print (line)
f.closed

python获取文件的内容要一行行获取,这种形式就是打开文件,想将输入结果一行行输入到内存中,然后再展现出来,以为是一行行输出,所以我们就要用到for循环来,循环展示,不然只能看到一行。

 

4.跳到文件的制定位置

f.seek(5)
print (f.tell())

第一段是调到文件第五个字符的位置,第二段是显示当前的位置。

 

第二章 列表、元组、字典

 一、列表与元组

列表与元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么列表可以会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适。

a=[1,2,3,4]
b=(1,2,3,4)
print (a)
print (b)

显示结果:

[1, 2, 3, 4]
(1, 2, 3, 4)

 

列表的操作:

列表的创建:list=['ni','hao','ma']

列表的长度: print(len(list)) 结果为:3 说明这个列表有三个元素

得到列表中的第一个值或者某一个值:print(list[0]),print(list[2]) 结果分别为:ni  ma

删除列表中的一个值:del list[1] 这是删除列表的第二个值,因为位置是从0开始的,这样hao就被删除了

在列表中插入一个值:list.insert(1,'RAIN')   这是在列表第二个位置上面插入一个元素‘RAIN’

查找某个元素的位置:list.index('hao')  查找hao这个元素在列表中的那个位置

从列表中删除某个元素:list.remove('ni')   从列表的左边删除第一个出现的ni元素

查看列表中某个元素的个数:list.count('ma')  统计列表中ma元素出现的次数

从列表中删除指定的位置的元素:list.pop(1)  这是删除第二个位置的元素,如果()是空的话,默认删除最后一个

对列表进行排序:list.sort()  排序的顺序是先数字然后再大写最后再小写,reverse()为倒序排序

列表合并:L.extend(list) 这就是将list列表合并到了L列表

更改列表某个元素的值:list[2]='check' 这就是将列表第三个位置的值改为check

列表切片: list[2:6]  截取第三个位置到第第六个位置的元素,但是不包括第七个位置的元素,list[-5:] 这是截图最后五个元素的内容

 

 二、字典

1.字典介绍:

字典dict,是Python唯一的标准mapping类型,也是内置在Python解释器中的。

mapping object把一个可哈希的值(hashable value)映射到一个任意的object上。

什么是可哈希的

一个object是可哈希的(hashable), 是指这个object在其生存期内有一个不变的哈希值(hash value),即__hash__()方法返回的值。

所有不可变的(immutable)内置object都是hashable的,比如stringtuple。所有可变的(mutable)内置容器都不是hashable的,比如listdict(即没有__hash__()方法)。而所有自定义的类(use-defined class)对象都是可哈希的(hashable),并且只能和自己相等,其hashvalue为其id(object)的值,这里的id()为内置函数,CPython实现的时候取的对象在内存中的地址。

字典Dictionarykey必须是可哈希的,所以tuplestring可以做key,而list不能做key,字典本身是一个类。

2.字典的语法:

字典名称 = {

           "key1":"value",

           "key2":""value,

}

字典是无序得,字典里面可以嵌套字典,列表和元组。

 

3.dictionary支持的操作

作为Python唯一的标准mapping typedictionary支持了增,删,查,整体更新等操作。

一部分操作是由dict的成员函数实现的,一部分操作是由Python的内置函数(built-infunction实现的,也有使用Pythondel语句。

4.映射类型与序列类型的区别

1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

2):存储类型不同,映射类型的键,直接或间接地与值相关。

3):序列类型,有序之列;映射类型则无序之列

 

5.字典的内置方法

dict.clear():删除字典中所有元素

dict.copy():copy

dict.formkeys():创建字典

dict.get(key,default=None):返回对应键值

dict.has_key():键是否存在

dict.items():返回字典中键值对元祖的列表

dict.keys():键的列表dict.values():值的列表

 

6.要注意的地方

1、不允许一个键对应多个值,一个键只能对应一项

2、当键发生冲突时,取最后一个。

3Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

4、键必须是可哈希的。

所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。

不可变类型:string,integer,tuple

可变类型:list,dict

5、值相同的数字表示相同的键,如11.0的哈希值是相同的,因此它们是相同的键。

 

7.字典的操作示例

1、字典的创建:

diclist={
     'chai shao':'1234567',
     'shuai guo': '7654321',
     'mei nv': '1234311'
}

上面是一个字典的创建,每组都有一个key,后面的数字是value,每组key,value之间用,隔开。

2.字典的打印与key和value的查看:

print (diclist) #打印字典

print (diclist.keys()) #查看字典所有的key
print (diclist.values()) #查看字典所有的value

3.循环输出每一个键值对

for k,v in diclist.items():  #这里的k,v也可以单写
      print (k,v)

4. 获取字典中制定key的值,有则返回,没有默认返回none

print (diclist.get('shuai guo'))

5.添加新的item到字典

diclist['shuai ge'] = '321321321'  #这种方法如果字典里面有这个keys主键,就会覆盖原来的,没有则创建。

6. 拷贝字典

浅copy:第一种就是赋值,b=diclist,第二种就是import copy   c=copy.copy(diclist) #这种方法只是对字典的第一层进行了copy,如果字典内部还嵌套了字典,那内部的字典还是公用的一个内存地址。

深copy:b=copy.deepcopy(diclist)  #这是深copy就完全copy,内容再发生变化两个字典也互不受影响。

7.字典的删除

diclist.pop('chai shao') #制定字典的key值就行删除,还有一个参数popitem()里面不能加数字,就是默认删除第一个,如果清空整个字典可以用clear()方法。

 

posted @ 2016-08-05 11:47  chaishao  阅读(350)  评论(0)    收藏  举报