如何在文件顶部添加新的文本行?

Posted

技术标签:

【中文标题】如何在文件顶部添加新的文本行?【英文标题】:How can I add a new line of text at top of a file? 【发布时间】:2012-06-09 20:40:39 【问题描述】:

我正在开发一个使 Python 脚本可执行的简单程序,并且我正在处理添加解释器路径 (#!/usr/bin/python) 的部分。我尝试这样做,但不是添加新行,而是替换当前的 并且 删除下一行的一部分。我做错了什么?

我将源代码上传到 Ubuntu Pastebin:http://pastebin.ubuntu.com/1032683/ 错误代码在第 28 行和第 31 行之间:

wfile = open(file, 'r+')
if wfile.readline() != "#! /usr/bin/python\n":
    wfile.seek(0)
    wfile.write("#! /usr/bin/python\n")

在 iPad 2 (Python for ios) 上使用 Python 2.7.2,同时在同一 iPad(Cydia 端口)中使用 2.5.1 进行测试。

【问题讨论】:

您可以在此处将代码直接发布到问题中。如果它太大,那么问题的代码可能太多了。 append line to beginning of a file的可能重复 Prepend a line to an existing file in Python的可能重复 【参考方案1】:

你不能做你想做的事。寻找文件的开头并进行写入将从该位置覆盖,而不是追加。

在文件中间(或开头)添加一行的唯一方法是写出一个新文件,并将数据插入到您想要的位置。

【讨论】:

@espectalll123:乔是绝对正确的。任何解决方案都要求您将文件的全部内容read(),在开头插入一行,然后将write() 的全部内容放回文件中。 这样的话,我会重写程序。谢谢。【参考方案2】:

Joe 是正确的,因为您不能只在文件开头“插入”行。不过,这里有一个解决方案:

with open(my_python_script, "r+") as f:
    first_line = f.readline()
    if first_line != "#! /usr/bin/python\n":
        lines = f.readlines()
        f.seek(0)
        f.write("#! /usr/bin/python\n")
        f.write(first_line)
        f.writelines(lines)         

【讨论】:

【参考方案3】:

添加/替换命令行给出的每个文件的第一行:

#!/usr/bin/env python
import fileinput

shebang = "#! /usr/bin/python\n"
for line in fileinput.input(inplace=1):
    if fileinput.isfirstline() and line != shebang:
       print shebang,
       if not line.startswith("#!"): 
          print line,
    else:
       print line,

【讨论】:

以上是关于如何在文件顶部添加新的文本行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 程序中的 2 个特定字符之间比较 2 个文件中的文本行

在 C++ 中计算文本文件中的文本行数时出错

如何在 Android 中更改警报对话框的文本行

如何以不同的方式格式化不同的文本行,从在 AS3 中创建的文本字段,从 txt 文件填充文本?

python:删除重复的文本行组

如何使用 bs4 或 lxml 在 Python 中找到 XML 标记的文本行?