我不知道为什么,但是当我尝试使用file.read()读取文件时,Python无法识别文件的第一行..这是一个解释器错误,或者这是我的错? / p>
此处有一份程序副本(显示阅读结果):http://pastebin.ubuntu.com/1032832/
这是导致问题的代码:
if wfile.readline() != "#! /usr/bin/env python\n":
before = wfile.read()
wfile.seek(0)
wfile.write('#! /usr/bin/env python\n' + before)
wfile.close()
os.chmod(file, 777)
我用于测试的Python版本是适用于iOS的Python 2.5.1(Cydia端口)。我的设备是iPad 2。
答案 0 :(得分:6)
您正在使用readline()
语句中的if
函数读取文件的第一行。当你到达read()
时,第一行已被阅读。
后续的write()
会写出wfile.read()
已阅读的内容。
看起来您要检查文件的第一行是否包含相应的#!/usr/bin/...
行。如果没有,您希望将其插入当前第一行之前,然后在其下面写下原始第一行。这样就可以了:
with open(file, 'r+') as wfile:
before = wfile.readline()
if before != "#! /usr/bin/env python\n":
wfile.seek(0)
wfile.write('#! /usr/bin/env python\n' + before)
这样您可以将原始第一行保存在变量before
中供以后使用。
注意 :完成后,使用with
将自动为您关闭文件,或遇到异常。
答案 1 :(得分:0)
import os
file_name = 'foo.py'
shebang = '#!/usr/bin/env python'
with open(file_name, 'r') as f:
lines = f.read().splitlines()
if shebang not in lines[0]:
lines.insert(0, shebang)
with open(file_name, 'r+') as f:
f.write('\n'.join(lines))
os.chmod(file_name, 777)