Python 为什么file.read()不';t读第一行?

Python 为什么file.read()不';t读第一行?,python,file-io,python-2.5,Python,File Io,Python 2.5,我不知道为什么,但当我尝试使用file.read()读取文件时,Python无法识别文件的第一行。。这是翻译错误,还是我的错 您在此处有一份程序副本(显示读取结果): 这是导致问题的代码: if wfile.readline() != "#! /usr/bin/env python\n":     before = wfile.read()     wfile.seek(0)     wfile.write('#! /usr/bin/env python\n' + before)     wfi

我不知道为什么,但当我尝试使用file.read()读取文件时,Python无法识别文件的第一行。。这是翻译错误,还是我的错

您在此处有一份程序副本(显示读取结果):

这是导致问题的代码:

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。

您正在使用
if
-语句中的
readline()
函数读取文件的第一行。当您到达
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)
这样,您就可以在变量
之前保存原始的第一行,以备以后使用


注意:使用
将在完成后自动关闭文件,或者遇到异常。

您正在使用
if
-语句中的
readline()
函数读取文件的第一行。当您到达
read()
时,第一行已经被读取

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)
后续的
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)
这样,您就可以在变量
之前保存原始的第一行,以备以后使用

注意:将
一起使用将在完成后自动关闭文件,或者遇到异常

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)