python - 将预定义文本粘贴到 txt 文件中的特定行
问题描述
我正在尝试将包含多行的特定文本粘贴到包含在我的 D:\output 文件夹中的所有 .txt 文件中
我用这些代码列出了存储在我的输出文件夹下的所有 .txt 文件;
import os
myDir = 'D:\output'
# r=root, d=directories, f = files
for r, d, f in os.walk(myDir):
for file in f:
if ".txt" in file:
print(os.path.join(r, file))
每个 .txt 文件都有一个如下所示的部分。我想把我的文本块放在这个下面。
!**********************************************************************
! Global parameters
!**********************************************************************
.
.
.
这是我的多行文本块
searchpath (1) = '.'
gravity (1) = 0.0000000000000000E+00 ! Gravity
gravity (2) = 0.0000000000000000E+00 ! Gravity
gravity (3) = -9.8100000000000005E+00 ! Gravity
vehicle.startvel= 0.0000000000000000E+00 ! Vehicle initial velocity
vehicle.applystartvel= 0! Apply vehicle initial velocity at solver start
最后,我想让我的所有文件都像这样
!**********************************************************************
! Global parameters
!**********************************************************************
searchpath (1) = '.'
gravity (1) = 0.0000000000000000E+00 ! Gravity
gravity (2) = 0.0000000000000000E+00 ! Gravity
gravity (3) = -9.8100000000000005E+00 ! Gravity
vehicle.startvel= 0.0000000000000000E+00 ! Vehicle initial velocity
vehicle.applystartvel= 0! Apply vehicle initial velocity at solver start
.
.
.
谁能帮助我如何用python完成?我是一个新手。
解决方案
没有简单的方法可以编辑文本文件并在中间添加数据,因为它们是顺序的非索引文件。
常见的做法是新建一个临时文件,按照自己想要的方式重写整个txt,然后删除原文件,重命名新文件替换旧文件。
以下示例未经测试,请备份您的数据。
text_to_find = '''\
!**********************************************************************
! Global parameters
!**********************************************************************
'''
block_to_add = '''\
searchpath (1) = '.'
gravity (1) = 0.0000000000000000E+00 ! Gravity
gravity (2) = 0.0000000000000000E+00 ! Gravity
gravity (3) = -9.8100000000000005E+00 ! Gravity
vehicle.startvel= 0.0000000000000000E+00 ! Vehicle initial velocity
vehicle.applystartvel= 0! Apply vehicle initial velocity at solver start
'''
import os
myDir = r'D:\output'
for path, dirs, files in os.walk(myDir):
for filename in files:
if filename.endswith('.txt'):
fullname = os.path.join(path, filename)
with open(fullname) as f:
data = f.read() # read the entire file to memory
pos = data.find(text_to_find) #locate the text
if pos != -1: # found, insert the block
pos += len(text_to_find)
data = data[:pos] + block_to_add + data[pos:]
with open(fullname, 'w') as f:
f.write(data) # rewrite the entire file
推荐阅读
- gpu - Qualcomm SNPE 可以在 linux 板上工作吗?
- python - 如何将嵌套在 Request 中的 Json 提取到 Pandas DataFrame 中
- c# - 将浮动选项卡与主窗口分开处理的功能
- python - GF(2) 上矩阵秩的快速计算
- python - 如何在单个数据框中一次连接熊猫中的 35 列?
- function - 如何在 Rust 中动态构建具有不同数量参数的函数调用?
- reactjs - 如何使用 GoCD 的 GO_REVISION 将 git 哈希放入我的 ReactJs 应用程序
- html - 用 postgres 数据库信息填充 xhtml 表
- python - 使用 nltk word_tokenize 进行标记后重新加入原始句子
- android - 用于 android 开发的 IntelliJ IDEA 属性部分在哪里?