我有一个看起来像这样的文本文件:
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)
虽然无法获得正确的方法。
答案 0 :(得分:2)
您想要的是能够在适当的位置(同时)读取和写入文件。 Python附带了fileinput
模块,它有助于实现此目的:
import fileinput
for line in fileinput.input('data.txt', inplace=True):
line = line.rstrip()
print line + ",input"
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)
但肯定有更优雅的解决方案