【问题标题】:Take 1st line from file A and insert in file B at a specific line从文件 A 中取出第一行并插入到文件 B 中的特定行
【发布时间】:2021-02-02 07:35:39
【问题描述】:

我正在尝试从文件 A 中复制第 1 行并将其粘贴到文件 B 中的第 230 行中 触摸文件 B 中已经存在的其余文本。换句话说,只替换第 nr 行。文件 B 中的第 230 行,第 nr 行。 1 来自文件 A。

这是我的代码:

inputFile = open("A.txt", "r")
lines = inputFile.readlines()[0] #get 1st line from file A
outputFile = open("B.txt", "w")
for i, line in enumerate(lines):
       if 'Trim\n' in line:      #'Trim' is the text on line 230 in file B
          lines.insert(i, lines)
outputFile.truncate(0)
outputFile.seek(0) 
outputFile.writelines(lines)

这样,我最终将正确的行从文件 A 写入文件 B,但在第一行,它删除了文件 B 中的所有原始文本和数据。我怎样才能只将该行插入到文件 B 的第 nr 行。 230 不删除所有文本?

编辑更新: 现在有了 Prunes 的帮助,它就可以工作了!

inputFile = open("a.txt", "r")
outputFile = open("b.txt", "r")
addLine = inputFile.readline()  # Since you want the first line, read only that one.
lines = outputFile.readlines()
for i, line in enumerate(lines):
    if 'Trim\n' in line:
        lines.insert(i, addLine)
        break
outputFile2 = open("empty.txt", "w")
outputFile2.writelines(lines)

【问题讨论】:

    标签: python file-io line readlines write


    【解决方案1】:

    您不能像这样将一行“插入”到文件中。文件是一种位置数据结构,每个字符在文件中都有自己的位置。为了得到你想要的,你必须从插入点开始保存整个文件;在插入点写入新数据;并将剩余的文件重新写入它们的新位置。

    您的代码正确搜索文件B 中的Trim 行。但是,它会忽略 B 中的所有其他内容。你保存那 one 行。然后你删除整个文件并只写那一行。您对此非常明确。

    改为使用readlines 命令保存整个文件:

    addLine = inputFile.readline()  # Since you want the first line, read only that one.
    lines = outputFile.readlines()
    for i, line in enumerate(lines):
        if 'Trim\n' in line:
            lines.insert(i, addLine)
            break
    

    现在,将lines整个内容写入文件B。

    【讨论】:

    • 当我尝试这个时,它不会改变文件 B 中的任何内容。
    • 那么问题很可能出在您添加到上面的代码中。相应地更新您的帖子。
    猜你喜欢
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2022-08-06
    • 1970-01-01
    相关资源
    最近更新 更多