Python学习笔记(八)——有关文件的操作

一、打开文件

open函数用来打开文件
open(name[, mode[, buffering]])
open函数使用一个文件名作为唯一的强制参数,返回一个文件对象。
将文件对象赋予一个变量,在关闭文件时有实际的好处,应该尽量这么做。
f=open(r'C:\text\somefile.txt')
如果打开的文件在指定路径下不存在,则返回一个IO异常。

1.1      文件模式
r     读模式
w     写模式
a     追加模式
b     二进制模式(可添加到其他模式中使用)
+     读/写模式(可添加到其他模式中使用)

1.2      缓冲
open函数的第三个参数buffering可以设置文件的缓冲。
如果参数是0,就是无缓冲的,所有操作针对于硬盘。
如果参数是1,是有缓冲的,只有当flush或者close时参会更新硬盘上的数据。

二、基本的文件方法

2.1      读和写
f=open('somefile.txt','w')
f.write(something)
f.close()
f=open('somefile.txt','w')
f.read()

2.2     管式输出(UNIX的shell)
管道将一个命令的输入和下一个命令的输出连接在一起

2.3     读写行
file.readline()     读取单独一行
file.readlines()     读取所有行并将其作为列表返回
file.writelines()     将一个字符串列表返回
file.write()     

2.4     关闭文件
需要确保每次使用文件后将文件关闭,以免发生文件损坏或丢失。
方法一:使用try/finally语句
#open your file here
try:
    #write data to your file
finally:
    file.close()
方法二:使用with语句
with open("somefile.txt") as somefile:
    do something(somefile)
文件在语句结束后自动关闭

三、对问价内容进行迭代
3.1    按字节处理
f=open(filename)
while True:
    char=f.read(1)
    if nor char:break
    process(char)
f.close()

3.2     按行操作
f=open(filename)
while True:
    line=f.readline()
    if not line:break
    process(line)
f.close()

3.3     读取所有内容
如果文件不大,可以使用read或readlines把整个文件读入
#用read迭代每个字符
f=open(filename)
for char in f.read():
    process(char)
f.close()
#用readlines迭代行
f=open(filename)
for line in f.readlines():
    process(line)
f.close()

3.4     使用fileinput实现惰性行迭代
import fileinput:
    for line in fileinput.input(filename):
         process(line)
fileinput.input()返回能够用于for 循环遍历的对象
filename()返回当前文件的名称
fileno()返回当前累计的行数
filelineno()返回当前文件的行数
isfirstline()检查当前行是否是文件的第一行
nextfile()关闭当前文件,移动到下一个文件
close     关闭序列,结束迭代
示例:
import fileinput
for line in fileinput.input(inplace=True):#inplace=True代表原地修改
    line=line.rstrip()#返回字符串副本,默认空白字符被从字符串结尾处去掉
    num=fileinput.lineno()#当前的累计行数
    print ''%-40s # %2i" %(line,num)

3.5 文件迭代器
文件对象是可迭代的,也就是说可以在for循环中使用
f=open(filename)
for line in f:
    process(line )
f.close()
如果要得到readlines的效果,可以:
lines=list(open('somefile.txt'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值