赞
踩
1、打开文件
使用内建函数open()打开一个文件:
handle=open(filename,mode=’r',,buffering=-1,encoding=’utf-8‘)
filename是文件名,可以是绝对路径或相对路径,绝对路径可能需要加上原始字符串r:
handle=open(r‘E:\app\text.txt’)
handel是一个文件句柄,是一个可迭代对象,名字不固定,可以直接使用for循环按行读取文件内容:
- for line in handle:
- print(line)
handle使用完毕,需要close,否则会引起资源泄露(一个进程能打开的句柄是有限的)。
handle.close()
mode为可选参数,表示文件对象拥有的模式,默认值为r;
buffering为可选参数,表示是否使用缓存,默认值为-1(0代表不缓冲,1或大于1的值表示缓冲1行或指定缓冲区大小);
encoding为编码格式。
open()函数—mode:
mode | function |
r | 以只读模式打开 |
w | 以写模式打开(清空原内容) |
x | 以写模式打开,若文件存在则失败 |
a | 以追加模式打开(从EOF开始,必要时创建新文件) |
r+ | 以读写模式打开 |
w+ | 以读写模式打开(清空原内容) |
a+ | 以读和追加模式打开 |
rb | 以二进制读模式打开 |
wb | 以二进制写模式打开(参见w) |
ab | 以二进制追加模式打开(参见a) |
rb+ | 以二进制读写模式打开(参见r+) |
wb+ | 以二进制读写模式打开(参见w+) |
ab+ | 以二进制读写模式打开(参见a+) |
2、读取文件
只会返回没有读取过的字符串。
读取方式:
read:读取指定长度字节的数据,返回一个字符串(不是很常用);
read(n):返回n个字符;
readline:读取一行数据,返回一个字符串;
readlines:读取整个文件,返回一个列表,列表中的每一项是一个字符串,代表一行的内容;
示例:
- f=open(‘text.txt’,’r’)
- print(f.readlines())
3、写入文件
write()函数:向文件写入一段字符串;
writelines():写入多行
如果需要写入文件,必须按照‘w'或’a'的方式打开文件,否则会写入失败。如果文件不存在,会生成新的文件。
示例:
覆盖写:
- f=open(‘test.txt’,’w’)
- f.write(‘aaaaaaa’)
追加写:
- f=open(‘test.txt’,’a’)
- f.write(‘aaaaaaa’)
不建议直接write,建议使用with语句。
4、with语句
上文说到,文件打开的时候,必须要执行关闭操作,否则会占用线程。
在with语句块内进行文件操作,当文件操作完毕后,出了with语句外,就会自动执行关闭操作。
- with open(‘test.txt’,’w’) as f
- f.write(‘aaaaa’)
5、文件操作相关函数
读文件:f.read(),f.readline(),f.readlines();
写文件:f.write(),f.writelines();
关闭文件:f.close();
strip()函数:
readline和readlines函数读取文件时会保留换行符,使用strip函数能够去掉每行的换行符以及每行中的空格;
- line=open('text.txt','r',encoding='utf-8')
- for f in line.readlines():
- print(f.strip())
seek()函数:
语法:
f.seek(offset,whence=0)
在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)便宜offset个字节,wnence参数可u西安,默认值为0。
文件操作例子:
将文件users.txt的字符串前加上序号1,2,3…后写到另一个文件goods.txt中。
- with open(‘users.txt’) as f1:
- cNames=f1.readlines()
- for i in range(0,len(cNames))
- cNames[i]=str(i+1)+’’+cNames[i]
- with open(‘goods.txt’,’w’) as f2
- f2.writelines(cNames)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。