0

我不知道为什么,但是当我尝试使用 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)

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

4

2 回答 2

6

您正在使用-statementreadline()中的函数读取文件的第一行。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以供以后使用。

注意: using在您完成或遇到异常时with 自动为您关闭文件。

于 2012-06-09T22:19:26.427 回答
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)
于 2012-06-10T00:34:30.237 回答