1. 打开文件 open
handle = open(file_name,’r’,encoding = ‘utf-8’)
- handle是一个文件句柄,是一个可迭代的对象,可以直接使用for循环按行读取文件内容。
- Handle使用完毕,需要close掉,否则会引起资源泄漏(一个进程能打开的句柄数目是有限的)
- r:只读 w:覆盖写 a:追加写
1.1 以相对路径打开
#使用内建函数open
#r:只读 w:覆盖写(之前文件内容会被清空,重新写入新内容) a:追加写
#默认会按照gbk编码方式读取文件,需要修改为utf-8(最好提前确认下要打开的文件编码方式)
#以相对路径打开(打开文件与当前程序在同级目录时使用)
file_1210 = open('测试文档','r',encoding = 'utf-8')
for line in file_1210:
print(line.strip()) #print本身会带一个换行符,加上strip消除换行
file_1210.close() #打开文件之后一定要关闭文件,否则会引起资源泄露(一个进程能打开的句柄数目是有限的)
1.2 以绝对路径打开
以绝对路径打开,需要注意绝对路径中经常会包含转义字符,故需要在路径前加r,代表原始字符串
#以绝对路径打开,需要注意绝对路径中经常会包含转义字符,故需要在路径前加r,代表原始字符串
file_1210 = open(r'G:\0-编学编测\2-第二阶段\python作业01.txt','r',encoding = 'utf-8')
for line in file_1210:
print(line.strip())
file_1210.close()
2. 读文件
关键字 | 含义 |
---|---|
read | 读指定长度字节数的数据,返回一个字符串(不是很常用) |
readline | 读取一行数据,返回一个字符串 |
readlines | 读取整个文件,返回一个列表,列表中的每一项是一个字符串,代表了一行的内容 |
- 直接使用for line in f的方式循环遍历每一行,功能和readline类似,一次只读一行,相比于readlines占用内存少
#文件特性:读取过的就不会再读,如果想要再次读取,需要关掉重新打开
file_1210 = open('测试文档','r',encoding = 'utf-8')
print(file_1210.read(2)) #单独在read里面加数字2,会显示2个字符
print(file_1210.readline()) #从已经读到的地方开始,读取当前的一行
print(file_1210.readlines()) #返回的是一个列表,可以按照下标取具体哪一行
file_1210.close()
#读取指定行数,需要将读取结果赋值给一个变量
file_1210 = open('测试文档','r',encoding = 'utf-8')
result = file_1210.readlines()
print(result[2].strip()) #读取第三行内容
file_1210.close()
3. 写文件
Write:向文件中写一段字符串,如果需要写文件,必须按照‘w’或‘a’的方式打开文件,否则会写失败
3.1 追加写a
#写文件,如果要写入的文件不存在,会新建一个
#追加写:a
file_01 = open('test05.txt','a',encoding='utf-8')
for n in range(1,6):
file_01.write('这是第%d行\n'%n)
file_01.close()
3.2 覆盖写 w
#覆盖写:w
file_01 = open('test05.txt','w',encoding='utf-8')
for n in range(1,6):
file_01.write('这是第%d行\n'%n)
file_01.close()
4. With open文件(工作中常用这种方法)
当文件操作完毕后,会自动关闭文件(不用再写close语句了)
with open('test05.txt','w',encoding='utf-8') as file_01:
for n in range(1,6):
file_01.write('这是第%d行\n'%n)