1、简单open写法
了解一下完整格式:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
参数说明:
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式(只读模式‘r’,写入模式‘w’)
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型读文件
首先我们写入如下data.txt文件
注意一下几点理解:
- read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。
- readlines() 一次读取整个文件,readlines() 自动将文件内容分析成一个行的列表。
- readline() 每次只读取一行。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
f = open ( 'C:/Users/Desktop/data.txt','r',encoding = 'utf-8' )
for line in f.readlines():
print(line)
f.close()
结果输出:aa 11 bb 22 cc 33
(转置)
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的;
这种写法繁琐,而且不实用。
2、进阶open写法
Python引入了with语句来自动帮我们调用close()方法
当使用readlines()方法时:
with open('C:/Users/Desktop/data.txt','r',encoding = 'utf-8' ) as f1:
list = f1.readlines()
print(list)
结果输出:['aa\n', '11\n', 'bb\n', '22\n', 'cc\n', '33\n']
可以看见,每一行后面都会有\n。
当使用read()和readline()时:
with open('C:/Users/YSH/Desktop/data.txt','r',encoding = 'utf-8' ) as f1:
list = f1.readline()
print(list)
IN[]:print(list)
aa
with open('C:/Users/YSH/Desktop/data.txt','r',encoding = 'utf-8' ) as f1:
list = f1.read()
print(list)
IN[]:print(list)
aa
11
bb
22
cc
33
可以看见,这两种方法并没有\n,其实是有输出\n的,因为print里的’\n’被认为是换行的意思,所以\n就消失了。
对于readlines()方法产生的\n,可以采用rstrip()方法来去掉’\n’
with open('C:/Users/Desktop/data.txt','r',encoding = 'utf-8' ) as f1:
list = f1.readlines()
# print(list)
for i in range(0 ,len(list)):
list[i] = list[i].rstrip('\n')#rstrip()移除右边的空格
print(list)
结果输出:['aa', '11', 'bb', '22', 'cc', '33']