python中的文件读写
python中可能会用到文件的读写,记录一下
python中的读文件:
python中提供了一个函数open(name[, mode[, buffering]]) -> file object,
后面两个参数可选
mode:
默认mode为r读模式,mode有几个值,r,w,a,分别为读,写,追加写入文件,其中r必须是存在的文件,
w和a对不存在的文件会自动创建文件
还有r+, 这个是读写模式,这个也要求文件必须存在,好处是,打开文件后,可写可读
rb, wb,r+b等模式,这些在windows系统下为二进制的方式进行读取,在linux下没有区别
buffering的值为:
0没有缓冲区大小,
1按行读取文件,
大于1的为指定的字节数,
返回一个文件对象
如:
f = open("/data/test.log") -> 大开一个模式为读文件,没有缓冲的文件对象
f = open("/data/test.log", 'r', ) ->跟上一个一样
f = open("/data/test.log", 'rw') ->读写文件
读入文件内容(按行读取):
content = f.read() ->将全部的文本一次读出
lineList = f.readlines() ->将文件按行读出,读出后转换为一个list存储
lineList = list(f) -> 同f.readlines()
这样可以利用for循环来操作没一行
如:
for line in f.readlines():
print line
还可以直接对文件对象用for循环操作:
for line in f:
print line
按字节读取文件:
content = f.read(size) ->读入指定的大小的字节,若未指定,则表示读入整个文件或当前位置到最后
f.seek(offset[, whence]) -> 将当前的读入指针移动到指定的位置:这里取决于whence的值,
默认为0,0绝对位置, 1,相对位置,2,从文件末尾倒数
如:
f.seek(100) ->指针跳到第100个字节
f.seek(100, 1) ->指针跳到离当前位置的100个字节位置,即currentPosition + 100
f.seek(-100, 2) ->指针跳到文件末尾倒数第100个字节的位置
文件写入:
f = open("/data/test.log", 'w') ->这个模式为:若文件不存在,创建文件,若存在,当写入文件后,原来的全部内容清楚
f = open("/data/test.log", 'a') ->这个模式为追加append,若文件不存在,创建文件,即在现有的内容中在后面添加写入的内容
f.write("something") ->写入相应的文件,如要一行一行写入,必须在后面加上"\n"
f.writelines(stringList) ->一次写入多行,传入的是一个字符串的list
补充: file的其他方法
f.tell() ->告诉当前的文件指针,每读文件一次,都在改变
f.close() ->关闭文件
读文件例子
#! /usr/bin/python#-*- coding:utf-8 -*-#Filename: readFile.py#Author: xiaobing#E-mail: xiaobingzhang29@gmail.com#Date: 2013-10-06#Description: filename = "/home/xiaobing/test.log"lines = []try: f = open(filename, 'r') lines = f.readlines()except IOError as e: print eelse: for line in lines: print linefinally: f.close()