我需要逐行编写一个文本文件。此代码逐行打印文本,但只有最后一行存储在 result.txt 文件中。
import re
import fileinput
for line in fileinput.input("test.txt"):
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
print new_str
open('result.txt', 'w').write(new_str)
我需要逐行编写一个文本文件。此代码逐行打印文本,但只有最后一行存储在 result.txt 文件中。
import re
import fileinput
for line in fileinput.input("test.txt"):
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
print new_str
open('result.txt', 'w').write(new_str)
我不知道你为什么需要 fileinput 模块,open
也可以处理这种情况。
您的 for 循环遍历所有行并用新行覆盖。 new_str
最后一行没有下一行,所以它不会被覆盖,所以它是唯一会被保存的行。
import re
test_f = open('test.txt')
result_f = open('result.txt', 'a')
for line in test_f:
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
result_f.write(new_str)
# also, this too, please:
test_f.close()
result_f.close()
with
即使代码崩溃,您也应该使用该语句自动关闭文件。
import re
with open('test.txt') as test_f, open('result.txt', 'w') as result_f:
for line in test_f:
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
result_f.write(new_str)
print new_str
test.txt 中的每一行都有。但是您只在循环之后将一行写入文件。在每次打印后更改要编写的代码:
outf = open('result.txt', 'w')
for line in fileinput.input("test.txt"):
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
print new_str
outf.write(new_str + '\n')
outf.close()
会做你想做的。
我假设您需要在文件末尾添加新行(即追加)
for line in fileinput.input("test.txt"):
new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
with open("f.txt", "a") as f:
f.write(new_str)
您可以使用 f.write 行并重复它,直到您写完所有内容