用触动精灵脚本,实现删除一个文本文件中的指定第几行?并且删除完后那一行不带空格,下面内容能完整替补上来
基于Monster 组和GPT的调写:
-- 设置文件路径和要删除的行数
local file_path = "/sdcard/test.txt"
local line_to_delete = 2
-- 读取文件内容
local file = io.open(file_path, "r")
local content = {}
for line in file:lines() do
table.insert(content, line)
end
file:close()
-- 删除指定行
table.remove(content, line_to_delete)
-- 将修改后的内容写回文件中
file = io.open(file_path, "w+")
for i,line in ipairs(content) do
-- 去掉被删除行的换行符
if i ~= line_to_delete and i ~= #content then
file:write(line.."\n")
elseif i ~= line_to_delete then
file:write(line)
end
end
file:close()
读取文件中的所有行,然后删除指定行,最后将修改后的内容重新写回到文件中。为了确保删除行后的内容能够完整替补上来,脚本会去掉被删除行的换行符(如果被删除行不是最后一行)。
【1】用触动精灵如何删除文本文件中的第几行,参考以下代码
文本路径="C:\\成功账号.txt"
Text = Plugin.File.ReadFileEx (文本路径)
Text=Split (Text,"|")
数量=UBound (Text)-1
行数=1
For 数量
内容= Lib.文件.读取指定行文本内容 (文本路径,行数)
内容1= Lib.文件.读取指定行文本内容 (文本路径,行数+1)
Call Lib.文件.替换指定行文本内容 (文本路径,内容1,行数)
Call Lib.文件.删除指定行文本内容 (文本路径,行数+1)
MessageBox "第一行内容是"&内容
MessageBox "第二行内容是"&内容1
Next
【2】按键精灵编程,读取txt文件并逐行删除,参考以下代码
Dim fso, f, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.txt", 1) '打开文件
Do While Not f.AtEndOfStream '循环读取文件直到结束
s = f.ReadLine '读取一行
MsgBox s '显示一行
Call DeleteLine(1) '删除第一行
Loop
f.Close '关闭文件
Sub DeleteLine(ByVal LineNumber) '删除指定行的子程序
Dim fso, f, s, i
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.txt", 1) '打开文件
s = ""
i = 0
Do While Not f.AtEndOfStream '循环读取文件直到结束
i = i + 1
If i <> LineNumber Then '如果不是要删除的行,则保存到变量s中
s = s & f.ReadLine & vbCrLf
Else '如果是要删除的行,则跳过不保存
f.SkipLine
End If
Loop
f.Close '关闭文件
Set f = fso.OpenTextFile("C:\test.txt", 2) '以写入模式打开文件
f.Write s '将变量s的内容写入到文件中,覆盖原有内容
f.Close '关闭文件
End Sub
该回答引用ChatGPTpython
import os
def delete_line(file_path, line_number):
with open(file_path, 'r') as file:
lines = file.readlines()
with open(file_path, 'w') as file:
for index, line in enumerate(lines):
if index != line_number - 1:
file.write(line)
elif index == line_number - 1 and line[-1] == '\
':
file.write(line[:-1])
else:
file.write(line)
file_path = 'example.txt'
line_number = 3
delete_line(file_path, line_number)
在使用触动精灵实现删除指定行的文本文件时,需要先通过文件操作获取文件内容,然后将要删除的行从文件内容中删除,并将结果保存回原文件。下面是一个Python的实现示例脚本:
# -*- coding: utf-8 -*-
import os
# 定义要删除的行号
line_number = 3
# 定义要读取的文件路径
file_path = 'path/to/your/file.txt'
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 删除指定行
del lines[line_number - 1]
# 将修改后的内容保存回原文件
with open(file_path, 'w', encoding='utf-8') as f:
f.writelines(lines)
上述脚本中,line_number 变量用于指定要删除的行号,file_path 变量用于指定要操作的文件路径。脚本首先使用 with open(file_path, 'r', encoding='utf-8') as f 语句读取文件内容,并将结果存储到 lines 变量中。然后,通过 del lines[line_number - 1] 语句删除指定行。最后,使用 with open(file_path, 'w', encoding='utf-8') as f 语句将修改后的内容保存回原文件。
注意,使用该脚本时,需要将 path/to/your/file.txt 替换为要操作的文件路径,并将 line_number 替换为要删除的行号。另外,该脚本只能删除文件中的一行,如果要删除多行,则需要修改脚本实现。
删除指定行后,如果要确保删除后下面的内容能完整替补上来,需要确保删除的行末尾不带换行符。如果删除的行末尾有换行符,则删除后下一行内容将自动上移一行。如果想要确保下面的内容能完整替补上来,可以在删除指定行之前先将该行末尾的换行符删除。可以使用 line = line.strip('\n') 语句删除行末尾的换行符。完整的实现示例如下:
# -*- coding: utf-8 -*-
import os
# 定义要删除的行号
line_number = 3
# 定义要读取的文件路径
file_path = 'path/to/your/file.txt'
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 删除指定行,并删除该行末尾的换行符
lines[line_number - 1] = lines[line_number - 1].strip('\n')
del lines[line_number - 1]
# 将修改后的内容保存回原文件
with open(file_path, 'w', encoding='utf-8') as f:
f.writelines(lines)