Python高级功能之文件读写
一、Python进行文件读写的函数时open或file
file('filename','mode')
open('filename','mode')
mode模式
r 只读
r+ 读写
w 写入,先删除原文件,再重新写入,如果文件没有则创建
w+ 读写,先删除源文件,再重新写入,如果文件没有泽创建(可以写入输出)
a 写入,在文件末尾追加新的内容,文件不存在则创建
a+ 读写,在文件末尾追加新的内容,文件不存在则创建
b 打开二进制文件,可以与r,w,a,+结合使用
U 支持所有的换行符号 \r,\n,\r\n
>>> fo = open('/root/test.txt') #打开文件
>>> fo
<open file '/root/test.txt', mode 'r' at 0x7ff52bd64d20>
>>> fo.read() #读取文件
'asdfaf\nasdfad\nafd\n'
>>> fo.close() #关闭文件
>>> fo = open('/root/new.txt','w') #以w的模式打开文件,没有则创建
>>> fo.write('hello \ni am new') #写入内容
>>> fo.close() #关闭文件
二、文件对象方法
FileObject.close() #关闭
String = FileObject.readline([size]) #每次读取一行,size是指每行每次读取size个字符,直到行的末尾(超出范围输出空值)
>>> f1 = open('text.txt')
>>> f1.readline()
'www.csvt.net\n'
>>> f1.readline()
'i am sdfasd\n'
>>> f1.readline()
'hello world\n'
>>> f1.readline()
''
List = FileObject.readlines([size]) #每行为单位,返回一个列表,size是指每行每次读取行的size个字符,直到行的末尾
>>> f1 = open('text.txt')
>>> f1.readlines()
['www.csvt.net\n', 'i am sdfasd\n', 'hello world\n']
String = FileObject.read([size]) #读出文件所有内容,并复制给一个字符串
>>> f1.read()
'www.csvt.net\ni am sdfasd\nhello world\n'
FileObject.next() #返回当前行,并将文件指针到下一行(超出范围,停止输出)
>>> f1 = open('text.txt')
>>> f1.next()
'www.csvt.net\n'
>>> f1.next()
'i am sdfasd\n'
>>> f1.next()
'hello world\n'
>>> f1.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
FileObject.write(string)
FileObject.writelines(List)
FileObject.seek(偏移量,选项)
选项为0时,表示将文件指针指向从文件头部到“偏移量”字节处
选项为1时,表示将文件指针指向从文件的当前位置,向后移动”偏移量“字节
选项为2时,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节
FileObject.flush() #提交更新
例子:
文件查找:
统计文件中hello个数
#!/usr/bin/python
import re
fp = file("text.txt",'r')
count = 0
for s in fp.readlines():
li = re.findall("hello",s)
if len(li)>0:
count = count + len(li)
print "Search %d hello" % count
fp.close()
文件内容替换:
将文件中hello替换为abc,并保存结果到text2.txt文件中
#!/usr/bin/python
fp1 = file("text.txt",'r')
fp2 = file("text2.txt",'w')
for s in fp1.readlines():
fp2.write(s.replace("hello","abc"))
fp1.close()
fp2.close()
将文件中hello替换为abc
#!/usr/bin/python
fp1 = open("text.txt",'r+')
s = fp1.read()
fp1.seek(0,0)
fp1.write(s.replace("hello","abc"))
fp1.close()