为什么file.read()不读取第一行?

Xer*_*erz 0 python file-io python-2.5

我不知道为什么,但是当我尝试用file.read()读取文件时,Python无法识别文件的第一行..这是一个解释器错误,或者这是我的错?

你有一份程序副本(显示阅读结果):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)
Run Code Online (Sandbox Code Playgroud)

我用于测试的Python版本是用于iOS的Python 2.5.1(Cydia端口).我的设备是iPad 2.

Lev*_*von 6

您正在使用-statement中的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)
Run Code Online (Sandbox Code Playgroud)

这样,您可以将原始第一行保存在变量中before以供以后使用.

注意:完成后,usingwith 会自动为您关闭文件,或者遇到异常.