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

时间:2012-06-09 20:40:40

标签: python file-io python-2.7

我正在开发一个简单的程序,它使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")

将Python 2.7.2与iPad 2(Python for iOS)一起使用,也在同一台iPad(Cydia端口)中使用2.5.1进行测试。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分: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)         

答案 2 :(得分:2)

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

#!/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,