当前位置:   article > 正文

Python学习笔记——文件操作 (打开、读取、写入文件、with语句和文件操作相关函数)_with file readlines

with file readlines

1、打开文件

使用内建函数open()打开一个文件:

handle=open(filename,mode=’r',,buffering=-1,encoding=’utf-8‘)

filename是文件名,可以是绝对路径或相对路径,绝对路径可能需要加上原始字符串r:

handle=open(r‘E:\app\text.txt’)

handel是一个文件句柄,是一个可迭代对象,名字不固定,可以直接使用for循环按行读取文件内容:

  1. for line in handle:
  2. print(line)

handle使用完毕,需要close,否则会引起资源泄露(一个进程能打开的句柄是有限的)。

handle.close()

mode为可选参数,表示文件对象拥有的模式,默认值为r;

buffering为可选参数,表示是否使用缓存,默认值为-1(0代表不缓冲,1或大于1的值表示缓冲1行或指定缓冲区大小);

encoding为编码格式。

open()函数—mode:

modefunction
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:读取整个文件,返回一个列表,列表中的每一项是一个字符串,代表一行的内容;

示例:

  1. f=open(‘text.txt’,’r’)
  2. print(f.readlines())

3、写入文件

write()函数:向文件写入一段字符串;

writelines():写入多行

如果需要写入文件,必须按照‘w'或’a'的方式打开文件,否则会写入失败。如果文件不存在,会生成新的文件。

示例:

覆盖写:

  1. f=open(‘test.txt’,’w’)
  2. f.write(‘aaaaaaa’)

追加写:

  1. f=open(‘test.txt’,’a’)
  2. f.write(‘aaaaaaa’)

不建议直接write,建议使用with语句。

4、with语句

上文说到,文件打开的时候,必须要执行关闭操作,否则会占用线程。

在with语句块内进行文件操作,当文件操作完毕后,出了with语句外,就会自动执行关闭操作。

  1. with open(‘test.txt’,’w’) as f
  2. f.write(‘aaaaa’)

5、文件操作相关函数

读文件:f.read(),f.readline(),f.readlines();

写文件:f.write(),f.writelines();

关闭文件:f.close();

strip()函数:

readline和readlines函数读取文件时会保留换行符,使用strip函数能够去掉每行的换行符以及每行中的空格;

  1. line=open('text.txt','r',encoding='utf-8')
  2. for f in line.readlines():
  3. print(f.strip())

seek()函数:

语法:

f.seek(offset,whence=0)

在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)便宜offset个字节,wnence参数可u西安,默认值为0。

文件操作例子:

将文件users.txt的字符串前加上序号1,2,3…后写到另一个文件goods.txt中。

  1. with open(‘users.txt’) as f1:
  2. cNames=f1.readlines()
  3. for i in range(0,len(cNames))
  4. cNames[i]=str(i+1)+’’+cNames[i]
  5. with open(‘goods.txt’,’w’) as f2
  6. f2.writelines(cNames)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/183109
推荐阅读
相关标签
  

闽ICP备14008679号