python向文本中插入文字

编程入门 行业动态 更新时间:2024-10-11 21:24:14

python向文本中插入<a href=https://www.elefans.com/category/jswz/34/1769559.html style=文字"/>

python向文本中插入文字

使用python向文本中插入文字

本文只记录方法,希望对你能有所帮助!

第一种-原生:

1. 首行插入

主要利用文件读取和写入。

def write_data_to_file(file: str, data: str) -> None:"""读取文件,并将数据插入第一行:param file: 读取文件路径:param data: 插入数据:return:"""with open(file, "r+", encoding="u8") as fp:tmp_data = fp.read()  # 读取所有文件, 文件太大时不用使用此方法fp.seek(0)  # 移动游标fp.write(data + "\n" + tmp_data)

行数很少,原理也很简单。
如果我们要判断数据是否存在,不存在就插入,该怎么写?
简单更改一下即可:

2. 数据不存在再插入
def write_data_to_file(file: str, data: str) -> None:"""读取文件,并判断每行数据,如果和要插入的数据存在,就不插入,不存在,则插入第一行。:param file: 读取文件路径:param data: 插入数据:return:"""with open(file, "r+", encoding="u8") as fp:# 遍历每行数据进行判断for d in fp.readlines():if data in d:break  # 存在就跳出else:fp.seek(0)tmp_data = fp.read()  # 读取所有文件, 文件太大时不用使用此方法fp.seek(0)  # 移动游标fp.write(data + "\n" + tmp_data)

利用一个读取文件行做了一个判断,也比较简单。
升级一下,在某一行进行插入。

3. 任意行插入
def write_data_to_file(file: str, data: str, row: int = 1) -> None:"""读取文件,在某一行插入。:param file: 读取文件路径:param data: 插入数据:param row: 插入行:return:"""front_data = ""  # 前半部分存储after_data = ""  # 后半部分存储with open(file, "r+", encoding="u8") as fp:# 遍历每行数据进行判断行数,利用 enumerate 辅助计数for i, d in enumerate(fp.readlines(), start=1):if i >= row:after_data += delse:front_data += dfp.seek(0)  # 回到初始点fp.write(front_data)fp.write(data + "\n")fp.write(after_data)

同样代码也比较简单,利用前后分割,做的拼接。
这就是原生办法。
接下来我们介绍一个内置库fileinput

第二种-fileinput实现行数据插入

使用内置的fileinput实现,代码更简单:

1. 第一行插入
def replace_file_data(file_path: str, data: str) -> None:"""在第一行插入数据:param file_path: file 路径:param data: 插入的数据:return:"""with fileinput.input(files=file_path, inplace=True) as fp:for d in fp:if fp.filelineno() == 1:# 如果行数为 1 则进行插入print(data)print(d, end="")

需要注意inplace必须为true,他会捕捉当前的stdout,然后加入文件,我们为了简单,就直接使用print,所有也可以做删除操作,当行数等于某行时,就不print即可。
我们再介绍一个小方法,数据读取,一次性读取多个文件。代码如下:

2. 批量读取文件
def read_all_text(files: Iterable) -> None:"""读取所有文件数据:param files: 数据组:return:"""with fileinput.input(files=files) as f:for line in f:print(line, end="")

只需要调用函数即可。

read_all_text(["a.txt", "b.txt"])

好了,今天的小技巧就到这里,希望你能有所收获。

相关文件及代码:点击这里

更多推荐

python向文本中插入文字

本文发布于:2024-02-13 16:15:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759000.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文字   python   文本中

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!