python:操作文档——TXT篇
一、前言:
文档操作是任何web应用程序的组成部分,我们可以将一些保密级别不高的数据存储在文档中,这样就使得数据永久保存,而不是像全局变量一样,当程序结束后自动销毁,并释放内存。文档包含 txt 、csv 、xml 等……各种文档类型。那么python如何操作 TXT 文档呢,下面我们一起学习!
二、 文档操作
1、简介
所谓文档操作,就是对某种类型文件的创建、写入数据、删除数据、修改数据、查询数据、保存文档、删除文档等……一系列的流程操作。
那么操作文档有什么意义呢?首先声明一点:没有意义的操作我们是不会去学习他的,那么文档操作肯定是有意义的。首先,文档操作是大部分后端语言都要去接触学习的一个知识点,因为文档操作是任何web应用程序的组成部分,它可以永久保存保密程序不够高的数据,比如说你版本更新,更新的什么,有什么功能,都会存入文档,这样就解决了变量临时性保存数据的问题。
以下是本人腾讯QQ每次更新自带的text文档:
2、打开文档
# 方法【1】
"""
使用open()函数,但是每次打开后需要使用close()函数关闭
格式:open(file, mode, buffering, encoding, errors, newline, closefd, opener)
"""
# 完整语法格式为:
doc = open(file, mode='r', buffering=-1, encoding="utf-8", errors=None, newline=None, closefd=True)
# 方法【2】
"""
同样也是使用open()函数,但不同的是,它会自动关闭,所以无需使用close()函数手动关闭
"""
# 语法格式:
with open(file, mode='r', buffering=-1, encoding="utf-8", errors=None, newline=None, closefd=True)as
doc:
(1)open()函数参数说明
参数 | 说明 |
---|---|
file | 必须参数,文件路径+文件名称(相对路径或绝对路径) |
mode | 可选,文件的打开模式 |
buffering | 设置缓冲 |
encoding | 文件的打开版本,一般都使用utf-8 |
errors | 报错级别 |
newline | 区分换行符,这个在操作csv文档用处比较大 |
closefd | 传入的file参数类型,一遍情况下都是字符串 |
(2)文档的打开模式
r | 读取-默认值。打开文件进行读取,如果文件不存在报错 |
---|---|
a | 追加-打开文档,光标移至最后,追加数据,如果文档不存在,则创建 |
w | 写入-打开文档,光标移至开头,用于写入数据,如果文档不存在,则创建文档,如果文档中有数据,那么将直接覆盖 |
x | 创建-创建指定格式文档,如果文档存在则报错 |
t | 文本-默认值,文本模式 |
b | 二进制模式(例如图像) |
3、创建并写入文档
# 首先,因为我创建文档肯定要去写入东西的,所以使用写的模式打开
# 方法【1】
# 1、打开指定路径的txt文档,并赋值给一个变量,通过变量操作文档
# 以写的模式创建文档,文档名称为my_File.txt,版本为utf-8,如果不写utf-8则会出现鬼码
file = open("my_File.txt", "w",encoding="utf-8")
# 2、创建一个列表装上一些自己想加的字符串
my_list = ["python", "hellow", "world\n"]
# 3、使用join()函数在列表的每一个元素的后边连接换行符,并生成一个新的字符字符串
# 注意:join()函数用于可迭代对象,并且将字符串连接到可迭代对象的每一个元素后边(除最后一个元素外),所以要个给列表的最后一个元素加上换行符
new_str = "\n".join(my_list)
# 4、write函数用于写入字符串,write默认不会换行,所以要连接换行符
file.write("你好,世界\n")
# 5、writelines用于写入一个可迭代的对象,比如列表、元组、字符串等……这里我们将生成的新字符串new_str写入
# 注意writelines()函数也不会换行,所以要连接换行符
file.writelines(new_str)
# 6、最后关闭该文件,该笔的同时实则就是保存了
file.close()
# 方法【2】
# 1、打开指定路径的txt文档,并赋值给一个变量,通过变量操作文档,这里的变量在后边
# 以写的模式创建文档,文档名称为my_File.txt,版本为utf-8,如果不写utf-8则会出现鬼码
with open("my_File.txt", "w",encoding="utf-8")as file:
# 2、创建一个列表装上一些自己想加的字符串
my_list = ["python", "hellow", "world\n"]
# 3、使用join()函数在列表的每一个元素的后边连接换行符,并生成一个新的字符字符串
# 注意:join()函数用于可迭代对象,并且将字符串连接到可迭代对象的每一个元素后边(除最后一个元素外),所以要 个给列表的最后一个元素加上换行符
new_str = "\n".join(my_list)
# write函数用于写入字符串,write默认不会换行,所以要连接换行符
file.write("你好,世界\n")
# writelines用于写入一个可迭代的对象,比如列表、元组、字符串等……
# 注意writelines()函数也不会换行,所以要连接换行符
file.writelines(new_str)
运行结果:
4、读取文档
(1)read( int )函数
with open("my_File.txt","r",encoding="utf-8")as file:
"""
read()函数不带参数会获取文档中的全部字符,带int参数则从头开始获取几个字符,换行符算一个字符
当参数超过文档字符,不会报错,而是全部获取
"""
print(file.read())
(2)readlines( int )函数
"""
使用readlines()函数不带参数会默认获取文档中的全部参数(包括换行符),并返回一个列表
如果带参数,则只返回一个包含相应参数个数的数据列表
"""
print(file.readlines())
(3)readline( int )函数
# readline()函数不带参数会获取文档中的一行,带int参数则获取一行中的几个字符(换行符算一个字符)
print(file.readline(2))
5、追加数据
# 其实追加数据和写入数据差不多,只不过打开模式变为了a
# a代表以追加的方式打开文档
with open("my_File.txt", "a", encoding="utf-8")as file:
my_list = ["qq音乐", "网易云音乐", "酷我音乐", "酷狗音乐\n"]
new_str = "\n".join(my_list)
# write函数用于写入字符串
file.write("知名音乐APP有:\n")
# writelines用于写入一个可迭代的对象,比如列表、元组、字符串等……
file.writelines(new_str)
# 追没追加上咱读取以下就知道了
with open("my_File.txt","r",encoding="utf-8")as file:
# 获取并输出文档中的全部数据
print(file.read())
运行结果:
6、删除文档
# 方法【1】:
import os
# 【1】删除文档需要导入os模块
"""
1、调用os模块下的函数remove(file_name)
2、但是有时候我们不知道该文档是否存在,如果不存在删除肯定会报错
3、所以为了避免这种问题的发生,我们要使用条件判断语句
4、并且要使用os模块下的函数path.exists判断该文件是否存在,如果在那么exists会返回True,否则返回False
"""
# 如果该文件在该目录下存在
if os.path.exists("my_File.txt"):
# 那么就删除
os.remove("my_File.txt")
else:
# 否则提示
print("该目录下不存在该文件")
# 方法【2】:
import os
# 【1】删除文档需要导入os模块
"""
1、调用os模块下的函数remove(file_name)
2、但是有时候我们不知道该文档是否存在,如果不存在删除肯定会报错
3、所以为了避免这种问题的发生,我们使用os下的函数listdir(path),返回包含该目录下的所有文件的列表,并输出
4、我们就可以通过输出的这个列表来看该文件是否存在,如果存在则删除
"""
# 获取该文件目录下的所有文件列表
print(os.listdir("E:\Python_Learning\python_File\学生管理系统项目day_06"))
# 查看存在,那么就删除
os.remove("my_File.txt")")
os.listdir( path )函数输出结果:
三、总结
以上均为python操作txt文档的基本操作流程:创建=>>读取=>>追加=>>读取=>>删除,其操作的主要目的是为了永久性存储保密性不高的数据,这样就解决了变量临时性存储数据的难题。如果本篇文章有什么不完善的地方,还请各位码友能够多多指点,后续将为大家不断更新python操作其他类型文档等一些python相关的知识,谢谢!