Python 试图从一个文件中刮取并将刮取的内容写入另一个文件?

Python 试图从一个文件中刮取并将刮取的内容写入另一个文件?,python,io,Python,Io,警告:我不熟悉编码,欢迎任何建设性的批评 我的目标是:我正在尝试读取并刮取一个.txt文件,查找在几个指定字符之后出现的任何内容(在本例中是“[CHAT][@]”)。然后我想将所选数据写入一个新文件 这纯粹是为了编码实践 with open("/Users/barge/Desktop/Untitled.txt", "r") as logsfile: for line in logsfile: if "[CHAT] [@]" in line: pri

警告:我不熟悉编码,欢迎任何建设性的批评

我的目标是:我正在尝试读取并刮取一个.txt文件,查找在几个指定字符之后出现的任何内容(在本例中是“[CHAT][@]”)。然后我想将所选数据写入一个新文件

这纯粹是为了编码实践

with open("/Users/barge/Desktop/Untitled.txt", "r") as logsfile:
    for line in logsfile:
        if "[CHAT] [@]" in line:
            print(line[44], end='')  

with open("newtestfile.txt", "w+") as newfile:
    for eline in newfile:
        newfile.write(line[44])

logsfile.close()
newpyfile.close()
我的问题:我没有在终端中得到任何错误,但每次运行时,我的输出文件“newtestfile.txt”都是空的。第7行应该写untitle.txt第44个索引之后的所有字符,对吗


谢谢。

您的问题是,一旦上层循环退出,数据就会丢失。您将希望使用另一个
打开第一个循环下的输出文件,或者打开文件进行写入(直接使用
打开()
,而不使用
打开
),并使用每个循环。完成后不要忘记刷新并关闭文件

生成一个(阅读注释)行,
行[44]
,当您尝试将其写入文件时,它不再是[44]行

请尝试以下方法:

with open("/Users/barge/Desktop/Untitled.txt", "r") as logsfile, open("newtestfile.txt", "w+") as newfile:
    for line in logsfile:
        if "[CHAT] [@]" in line:
            print(line[44], end='')  # prints everything to the right of index[44] for each line
            newfile.write(line[44])
注:

  • with
    自动关闭文件
  • open()
    并不能真正生成一个
    迭代器,而是生成一个
    io.TextIOBase
    (阅读更多)的子类,称之为
    迭代器是为了更好地理解下面的过程的简化
  • 我无法测试代码

关键字一起使用时,无需对文件调用
close()