用触动精灵如何删除文本文件中的第几行?

用触动精灵脚本,实现删除一个文本文件中的指定第几行?并且删除完后那一行不带空格,下面内容能完整替补上来

基于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

该回答引用ChatGPT
可以使用Python编写脚本来实现删除文本文件中的指定行。以下是一个示例代码:
python
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)