首页 > 技术文章 > Python:文件操作

ping-y 2016-09-01 15:28 原文

文件创建:

open('path',模式)

打开文件的模式:

r:以只读方式打开文件(默认),指针在文件开头
w:以写入的方式打开文件,会覆盖已存在的文件
x:如果文件已经存在,使用此模式打开将引发异常
a:以写入模式打开,如果文件存在,则在末尾追加写入
b:以二进制模式打开文件
t:以文本模式打开(默认)
+:可读写模式
U:通用换行符支持

r+b:读写模式打开
w+b:写读模式打开
a+b:追加及读模式打开

常用函数:

f.close()   #关闭文件
f.flush()   #刷新文件内部缓冲
f.read(size=-1)   #从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.next()   #返回文件下一行
f.write(str)   #写入文件
f.readline()   #读取整行,包括 "\n" 字符,以列表形式返回
f.writelines(seq)   #向文件写入多行,写入速度比write快。
f.seek(offset,from)   #在文件中移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell()   #返回当前在文件中的位置
f.name()   #返回文件名称
f.mode()   #返回文件访问模式

例1:

>>> f = open('E:\\test.txt','w')   #在E盘下新建test.txt文件,并追加写入属性,注意:如果文本存在时会覆盖之前内容。
>>> f.write('************'12
>>> f.close()   #关闭文件
>>> f = open('E:\\test.txt')
>>> f.read() 
'************'
>>> f = open('D:\\test.txt','a+')  #如果文本存在,则在后面追加,不会覆盖之前的内容。
>>> f.write('This is a test!')
15
>>> f.close()
>>> f = open('D:\\test.txt')
>>> f.read()
'************This is a test!'

 例2:新建一个test.txt文件并编辑其内容,最后找出test.txt文件中you的数量

import re
count = 0
file = open('D:\\test.txt','w')
file.write("you\nyou're my superstar!\nyouaasdad\n5rtyoudfasf")
file.close()
file = open('D:\\test.txt','r')

for k in file.readlines(): r = re.findall('you',k) if len(r) > 0: count = count + len(r) print('count :',count) file.close()

输出结果:

count : 4

 例3:把test.txt中的'you'替换成she,并保存到原来文件中。

f1 = open('D:\\test.txt','r')
f2 = open('D:\\test1.txt','w')

for m in f1.readlines():
    f2.write(m.replace('you','she'))
f1.close()
f2.close()

f1 = open('D:\\test.txt','r')
f2 = open('D:\\test1.txt','r')
print(f1.read())
print('--------------我是分割线----------------')
print(f2.read())

输出结果:

you
you're my superstar!
youaasdad
5rtyoudfasf
--------------我是分割线----------------
she
she're my superstar!
sheaasdad
5rtshedfasf

 

推荐阅读