Python学习(六)——迭代、文件读写

迭代
迭代通过for…in…实现
①list

>>> l=['Ryan','Rick','Morty']
>>> for key in l:
    print key


Ryan
Rick
Morty

②tuple

>>> t=('Ryan','Rick','Morty')
>>> for key in t:
    print key


Ryan
Rick
Morty

③字符串

>>> for k in 'abcdefgh':
    print k


a
b
c
d
e
f
g
h

④字典
(dict的存储顺序不是按list顺序排列的)
迭代key:

>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for key in d:
    print key


name03
name02
name01

迭代value:

>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for value in d.iteritems():
    print value


('name03', 'Morty')
('name02', 'Rick')
('name01', 'Ryan')

同时迭代key和value:

>>> for key,value in d.iteritems():
    print key,value


name03 Morty
name02 Rick
name01 Ryan

⑤同时迭代多个变量:

>>> for x,y,z in [('a',1,4),('b',4,8),('d',7,9),('s',5,89)]:
    print x,y,z


a 1 4
b 4 8
d 7 9
s 5 89

⑥利用enumerate函数将list变成索引-元素对:

>>> L=[12,56,789,15,5,89,45,34]
>>> for i,v in enumerate(L):
    print i,v


0 12
1 56
2 789
3 15
4 5
5 89
6 45
7 34

⑦判断一个对象是否可以迭代:

>>> from collections import Iterable
>>> isinstance('Ryan',Iterable)
True
>>> isinstance(12345,Iterable)
False

文件读写

1 open()函数
flie_obj = open(filename, mode=’r’,buffering = -1)

filename为传入文件名
mode为可选参数,默认值为r,(’r’读,’w’写,’rb’读二进制文件<图像、视频等>,’wb’写二进制文件)
buffering默认值为-1(表示系统默认的缓存方式),为可选参数(0代表不缓存,1或大于1的值表示缓存一行或指定缓冲区大小)

>>> f1=open('F:/data.txt','r')
>>> print f1.read()
Hello,world!
>>> f1.close()
>>> f2=open('F:/data.txt','w')
>>> f2.write('abcdefg')
>>> f2.close()

读取非ASCII码文本文件时,必须以二进制模式打开,再解码。如GBK编码文件:

f=open('F:/data.txt','r')
u=f.read().decode('gbk')
print u
f.close()

(data.txt文件中内容为中文)
或使用codecs模块:

import codecs
with codecs.open('F:/data.txt','r','gbk') as f:
    print f.read()

2 readlines()函数
file_obj.readlines()
将数据从文件中一行一行的读取出来,返回一个list(包含换行符);

3 readline()函数
file_obj.readline()
读取文件中的第一行数据,返回一个字符串;

4 seek()函数
file_obj.seek(offet, whence=0)
在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)偏移offset个字节;
whence参数可选,默认值为0.

5 split()函数
split(self, sep=None, maxsplit=None)
split()函数:指定分隔符对字符串进行分割,参数1为指定的分隔符,参数2为分割的字符串个数;

s = "40920  8.326976    0.953952    320 8.326976    0.953952"
print s.split('\t')
print s.split('\t',2)

输出:

['40920', '8.326976', '0.953952', '320', '8.326976', '0.953952']
['40920', '8.326976', '0.953952\t320\t8.326976\t0.953952']

6 strip()函数
截取掉所有的回车字符

文件关闭

使用 try…finally 保证无论是否出错都能正确关闭文件

try:
    f=open('F:/data.txt','r')
    print f.read()
finally:
    if f:
        f.close()

或利用 with 语句:

with open('F:/data.txt','r') as f:
    print f.read()

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值