标签:
6.文件处理
file.readlines()是把文件的全部内容读到内存,并解析成一个list,当文件的体积很大的时候,需要占用很多内存,使用该方法是一种不明智的做法。
另一方面,从Python 2.3开始,Python中的文件类型开始支持迭代功能,比如下面两段代码做的其实差不多:
with open ( ‘foo.txt‘ , ‘r‘ ) as f: for line in f.readlines(): # do_something(line) |
with open(‘foo.txt‘, ‘r‘) as f:
for line in f:
# do_something(line)
|
但是,后面一种迭代占用更小的内存,而且更加智能(依赖于Python文件对象的实现),所需文件内容是自动从buffer中按照需要读取的,是值得鼓励的做法。
至于file.xreadlines()则直接返回一个iter(file)迭代器,在Python 2.3之后已经不推荐这种表示方法了,推荐用下面的
for line in f: # do_something(line) |
truncate()方法截断该文件的大小。如果可选的尺寸参数存在,该文件被截断(最多)的大小。
大小默认为当前位置。当前文件位置不改变。注意,如果一个指定的大小超过了文件的当前大小,其结果是依赖于平台。
注意:此方法不会在当文件工作在只读模式打开。
以下是truncate()方法的语法:
fileObject.truncate([ size ])
size -- 如果可选参数存在,文件被截断(最多)的大小。
此方法不返回任何值。
下面的例子显示 truncate()方法的使用。
#!/usr/bin/python
# Open a file fo = open("foo.txt","rw+")print"Name of the file: ", fo.name # Assuming file has following 5 lines# This is 1st line# This is 2nd line# This is 3rd line# This is 4th line# This is 5th line line = fo.readline()print"Read Line: %s"%(line)# Now truncate remaining file. fo.truncate()# Try to read file now line = fo.readline()print"Read Line: %s"%(line)# Close opend file fo.close()
当我们运行上面的程序,它会产生以下结果:
Name of the file: foo.txt Read Line: This is 1st line
Read Line:
7.增量日志的最佳处理
apache日志处理例子
标签:
原文地址:http://www.cnblogs.com/muzinan110/p/4919677.html