给文件添加标题

4 投票
3 回答
21098 浏览
提问于 2025-04-16 00:42

我有一个文件,里面的数据像下面这样:

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,

撰写回答