如何在文件顶部添加新的文本行?
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 个文件中的文本行