读取TXT文件中的数据
问题描述
从一个文本文件中读取数据,并打印出来看看是什么数据和数据类型。其中文件内容是:
python是一种编程语言
我爱编程
I like coding
3.1456
解决思路
- 定位文件位置
- 打开文件
- 读取数据
- 关闭文件
代码实现
#文件位置
filename='./1.txt'
#打开文件
file_obj=open(filename,mode='r',encoding='utf-8')
#读取文件
content3=file_obj.readlines(2)
print("content3:")
print(type(content3))
print(content3)
content1=file_obj.read()
print("content1:")
print(type(content1))
print(content1)
#关闭文件
file_obj.close()
运行之后得到结果
content3:
<class 'list'>
['python是一种编程语言\n']
content1:
<class 'str'>
我爱编程
I like coding
3.1456
结果分析
从运行结果分析可以看到
- 每执行一次read或者readlines方法,文件里的数据就被提取走。
- readlines方法读取的数据是以list类型呈现,而read方法读取的是以str类型呈现。
代码升级
读取数据中,必须严格遵循打开操作并关闭的步骤,很容易忘记关闭文件,导致OI异常。可以用with open() as 的格式来提升代码的安全性和健壮性。代码如下:
filename='./1.txt'
with open(filename,mode='r',encoding='utf-8') as file_obj:
content3 = file_obj.readlines(2)
print("content3:")
print(type(content3))
print(content3)
content1 = file_obj.read()
print("content1:")
print(type(content1))
print(content1)
向TXT文件中写入新数据
问题表述
在文本文件1.txt的末尾追加文字“庆祝国庆”。
解决思路
- 定位文件位置
- 打开文件
- 读取数据
- 关闭文件
代码实现
我们采用with open() as 的格式来完成上述问题,代码如下:
with open(filename,mode='w',encoding='utf-8') as file_obj:
content = "庆祝国庆"
file_obj.writelines(content)
然鹅,我们打开文件会发现只有新添加的文字,而之前的文字则被清空了。原因在于r模式下,指针在文件文件的开头,如果直接写入,则会覆盖源文件。有两种解决方法
- 通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。
- 直接用文件操作的a模式。
代码如下
filename='./1.txt'
with open(filename,mode='a',encoding='utf-8') as file_obj:
content = "庆祝国庆"
file_obj.write('\n')#换行
file_obj.write(content)
附文件操作模式及其说明(来源 https://blog.csdn.net/xrinosvip/article/details/82019844 )