我有一个包含3列的制表符分隔文件。我想添加一个相同数字1的新第一列。
inputfile是
a 3 6
b 3 5
c 3 5
d 8 4
这就是我想要的输出文件:
1 a 3 6
1 b 3 5
1 c 3 5
1 d 8 4
这是我到目前为止所做的:
#!/usr/bin/env python
import sys
import csv
f=open('inputfile.txt', 'r+')
t=[]
for line in f.readlines():
t.append('\n')
t.append(1)
f.writelines(t)
然而,我收到一个错误: Traceback(最近一次调用最后一次): 文件" ./ py.py",第6行,in sys.stdout(' inputfile.txt',' w') TypeError:' file'对象不可调用
答案 0 :(得分:2)
只需打开这两个文件并写入即可,将1
和标签\t
连接到正在运行的列表中的每一行。然后将列表输出到新文件:
f1 = "Input.txt"
f2 = "Output.txt"
t = []
with open(f1, 'r') as txt1:
for rline in txt1:
t.append("1\t" + rline)
with open(f2, 'w') as txt2:
for i in t:
txt2.write(i)
#1 a 3 6
#1 b 3 5
#1 c 3 5
#1 d 8 4
或者,为了避免使用列表(但需要附加到'a'
的文件):
with open(f1, 'r') as txt1:
for rline in txt1:
rline = "1\t" + rline
with open(f2, 'a') as txt2:
txt2.write(rline)
@JonClements甚至进一步建议避免每行打开/关闭文件的开销:
with open(f1) as txt1, open(f2, 'w') as txt2:
txt2.writelines('1\t' + line for line in txt1)
答案 1 :(得分:1)
您不需要sys模块来解决问题:
#!/usr/bin/env python
output_file = open('output.txt', 'w')
input_file = open('input.txt', 'r+')
for line in input_file.readlines():
line = line.split(" ")
line.insert(1, str(1))
line = (" ").join(line)
output_file.write(line)
input_file.close()
output_file.clsoe()
cat output.txt给出输出:
a 1 3 6
b 1 3 5
c 1 3 5
d 1 8 4
答案 2 :(得分:0)
如果您不想要其他任何内容,可以跳过csv模块并在文件中添加每行,如下所示:
open('out.txt', 'w').writelines(["1\t" + line for line in open("in.txt")])
答案 3 :(得分:0)
这将准确显示您所需的输出显示的内容:
fin = open('inputfile.txt', 'r+')
fout = open('outputfile.txt', 'w')
t=[]
for line in fin.readlines():
t.append('1 ' + line)
fout.writelines(t)