给文件添加标题
我有一个文件,里面的数据像下面这样:
88_NPDJ 565 789 3434 54454
98HGJDN 945 453 3453 23423
...
...
...
请问在文件里添加标题的最好方法是什么?这些数据已经输入到文件中了。数据是用制表符分隔的。
3 个回答
0
我假设你已经知道什么是头部信息,并且你只是想找个方法在文件的最上面插入这些头部信息。
一种方法是先把文件读到内存里,然后把文件截断,再写入头部信息,最后把原文件的内容写回去。不过如果文件很大,这种方法可能就不太好用了。如果文件很大,你可以先把头部信息写入一个新文件,然后逐行读取原文件的内容,把每一行都追加到新文件里,最后再把新文件重命名,替换掉旧文件。
1
你想要什么样的头部信息呢?像这样:
type A Type B Type C Type D Type E
88_NPDJ 565 789 3434 54454
98HGJDN 945 453 3453 23423
...
...
...
对吧?
你可以先打开一个临时文件,把头部信息写进去,然后把原文件的其他内容追加到这个临时文件里。接着,删除原来的文件,再把临时文件改名成原文件的名字。
import os
headers = ['type 1', 'type 2', 'insert more types']
filename = 'your/file/here'
tmp = open('TMP', 'w')
orig = open(filename, 'r')
tmp.write('\t'.join(headers) + '\n')
for line in orig.readlines():
tmp.write(line)
orig.close()
tmp.close()
os.remove(filename)
os.rename('TMP', filename)
9
想要实现“在原地修改文件”的效果,最好的方法是使用 fileinput 这个工具:
import fileinput
headers = 'a b c d e'.split()
for line in fileinput.input(['thefile.blah'], inplace=True):
if fileinput.isfirstline():
print '\t'.join(headers)
print line,