如何在python中添加文件顶部和底部的行?

时间:2017-05-23 16:46:54

标签: python python-2.7

我的python脚本中有一段代码,我需要在那里添加一些逻辑,在文件顶部添加一些行,并在文件的底部添加一些行。文件的名称将作为一个参数和那个文件有一个HTML代码。请你帮我一下如何添加文件顶部和文件底部的行

我以下面的方式将参数传递给我的脚本

abc.py -u abcde -p ***** -t "append line top and bottom" -f "test.txt"

下面是我要添加逻辑以在文件顶部和底部添加行的部分

else:

        with open(options.file, 'r') as fd:
            html = fd.read()

我想在现有文件test.txt

的顶部添加以下行
<ac:structured-macro ac:name="html">
<ac:plain-text-body><![CDATA[

并希望在文件test.txt

的底部添加以下行
]]></ac:plain-text-body>
</ac:structured-macro>

test.txt文件有很多HTML代码。

2 个答案:

答案 0 :(得分:0)

您可以在r+模式下打开文件,阅读其内容,快退,编写“前缀”部分,编写内容然后编写后缀部分。类似的东西:

# obtain these from wherever you want:
prefix = "<ac:structured-macro ac:name=\"html\">\n<ac:plain-text-body><![CDATA["
suffix = "]]></ac:plain-text-body>\n</ac:structured-macro>"

with open("test.txt", 'r+') as f:
    contents = f.read()  # cache the full file content
    f.seek(0)  # rewind
    f.write(prefix)  # write the prefix
    f.write(contents)  # write the cached content
    f.write(suffix)  # write the suffix
    f.truncate()  # truncate the rest in case we decided to play with the 'contents' length

当然,这将读取RAM中的整个文件,但除非你有长千兆字节的HTML / XML文件(在这种情况下我想知道解析器可以处理它们),这应该不是问题。

答案 1 :(得分:0)

要在最后添加,您可以使用

with open(options.file, 'a') as fd: # it is important to open as 'a' to append html = fd.write("What you want to write to file")

要在顶部添加,您可以将文件作为字符串读入变量,然后将文件追加到要在顶部写入的文本,然后将整个文件写入文件

但是这会使用大量的RAM,并且仅适用于小文件