我的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代码。
答案 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,并且仅适用于小文件