python基础文件操作

怎么在已有内容的文件中修改或者添加内容

模式 描述
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))               #保存入结果文件

你可能感兴趣的:(python基础文件操作)