我正在开发一个简单的程序,它使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进行测试。
答案 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,