Python 试图从一个文件中刮取并将刮取的内容写入另一个文件?
警告:我不熟悉编码,欢迎任何建设性的批评 我的目标是:我正在尝试读取并刮取一个.txt文件,查找在几个指定字符之后出现的任何内容(在本例中是“[CHAT][@]”)。然后我想将所选数据写入一个新文件 这纯粹是为了编码实践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
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()
)