3

我正在开发一个使 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(适用于 iOS 的 Python)一起使用,同时在同一 iPad(Cydia 端口)中使用 2.5.1 进行测试。

4

3 回答 3

6

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

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

于 2012-06-09T20:43:58.907 回答
3

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)         
于 2012-06-09T20:59:23.780 回答
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,
于 2012-06-09T21:11:13.703 回答