用Python逐行编写一个文本文件

时间:2013-08-17 10:17:53

标签: python python-2.7

我需要逐行编写一个文本文件。此代码逐行打印文本,但只有最后一行存储在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)

3 个答案:

答案 0 :(得分:5)

  1. 我不知道你为什么需要fileinput模块,open也可以处理这个案例。

  2. 您的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()
    
  3. 即使代码崩溃,您也应该使用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)
    

答案 1 :(得分:0)

test.txt中的每一行都有print new_str。但是你只需要在>循环后的文件中写一行。在每次打印后更改要写入的代码:

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()

会做你想做的事。

答案 2 :(得分:0)

我假设您需要在文件末尾添加新行(即追加)

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行并重复它,直到您编写所有内容