怎么在已有内容的文件中修改或者添加内容
模式 | 描述 |
---|---|
r | 以只读方式打开文件,可读文件信息 |
w | 以写方式打开文件,向文件写入信息。文件存在则覆盖 |
a | 已追加模式打开文件(指针指向末尾) |
r+ | 以读写方式打开文件,对文件读写操作 |
w+ | 消除文件内容,然后以读写方式打开文件 |
a+ | 以读写方式打开文件,将指针移到末尾 |
b | 以二进制模式打开文件。只对Windows和Dos有效 |
方法
- f.readline():逐行读取文件 (或者 for i in open(‘path’))
- f.writelines():多行写入
- f.seek(偏移量,选项)
这个例子可以充分的解释前面使用r+这个模式的时候,
为什么需要执行f.read()之后才能正常插入f.seek(偏移量,选项)
选项=0,表示将文件指针指向从文件头部到“偏移量”字节处
选项=1,表示将文件指针指向从文件的当前位置,向后移动“偏移量”字节
选项=2,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节
偏移量:正数表示向右偏移,负数表示向左偏移
- f.flush():将修改写到文件中
- f.tell():获取指针的位置
文件查找和替换(正则表达式)
基本正则语法
1.始终
字符串开始用^ 字符串结尾用$
2.重复次数
*:(0~无穷)<=> {0,}
+: (1~无穷)<=> {1,}
?: (0,1)<=> {0,1}
{}: 范围(比如:ab{3,5} <=> abbb~abbbbb
3.其他
|: 或(比如:(b|cd)ef <=> bef,cdef
.: 可代替任何字符 (比如:^.{3}$ 表示3个字符长度的任意字符串)
[]: 表示该范围的字符可以出现 (比如:^[a-zA-z] 表示一个以字母开头的字符串)
\: 转义符 在'^.$()|+?\'这些字符前加转义字符,[]中不需要加(\d <=>[0-9], \D <=>[^/d]非数字, \s <=>空白字符, \w <=>单词字符,任何数字字母和下划线
(): 表示一个分组
统计文件中关键字个数
法一:
#!/usr/bin/python
import re
f = open('/tmp/test.txt')
source = f.read()
f.close()
r = r'hello'
s = len(re.findall(r,source))
print s
法二:
import re
fp = file("/tmp/test.txt",'r')
count = 0
for s in fp.readlines():
li = re.findall("hello",s)
if len(li)>0:
count = count + len(li)
print "Search",count, "hello"
fp.close()
去掉文件中的空行和带’#'的注释行
f = open('test.txt')
result = list()
for line in f.readlines(): # 逐行读取数据
line = line.strip() #去掉每行头尾空白
if not len(line) or line.startswith('#'): # 判断是否是空行或注释行
continue #是的话,跳过不处理
result.append(line) #保存
result.sort() #排序结果
print result
open('cdays-4-result.txt','w').write('%s' % '\n'.join(result)) #保存入结果文件