在python中为每个文本行插入新数据

时间:2018-02-13 13:36:22

标签: python file file-writing

我有一个看起来像这样的文本文件:

1,004,59
1,004,65
1,004,69
1,005,55
1,005,57
1,006,53
1,006,59
1,007,65
1,007,69
1,007,55
1,007,57
1,008,53

想要创建将由'输入'插入的新文本文件,类似这样的

1,004,59,input
1,004,65,input
1,004,69,input
1,005,55,input
1,005,57,input
1,006,53,input
1,006,59,input
1,007,65,input
1,007,69,input
1,007,55,input
1,007,57,input
1,008,53,input

我尝试过这样的事情:

with open('data.txt', 'a') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):
            line[i] = line[i].strip() + 'input'
    for line in lines:
        f.writelines(line)

虽然无法获得正确的方法。

3 个答案:

答案 0 :(得分:2)

您想要的是能够在适当的位置(同时)读取和写入文件。 Python附带了fileinput模块,它有助于实现此目的:

import fileinput

for line in fileinput.input('data.txt', inplace=True):
    line = line.rstrip()
    print line + ",input"

Discusssion

fileinput.input()函数返回一个逐行读取文件的生成器。每行最后都有一个新行(\ n或\ r \ n,取决于操作系统)。

然后代码剥离这一新行的每一行,添加“,输入”部分,然后打印出来。请注意,由于fileinput magic,print语句的输出将返回到文件而不是控制台。

答案 1 :(得分:1)

有换行符' \ n'在文件的每一行,所以你应该处理它。 编辑:哦,我忘记了rstrip()函数!

tmp = []
with open("input.txt", 'r') as file:
    appendtext = ",input\n"
    for line in file:
        tmp.append(line.rstrip() + appendtext)

with open("input.txt", 'w') as file:
        file.writelines(tmp)

加了:

如果您使用 fileinput ,Hai_Vu的回答非常好,因为您不必像我一样打开文件两次。

答案 2 :(得分:0)

只做你要问的事我会选择像

这样的事情
newLines = list()
with open('data.txt', 'r') as f:
    lines = f.readlines()

    for line in lines:
        newLines.append(line.strip() + ',input\n')

with open('data2.txt', 'w') as f2:
    f2.writelines(newLines)

但肯定有更优雅的解决方案