【问题标题】:Not reading all characters after seek搜索后不读取所有字符
【发布时间】:2016-11-16 04:16:17
【问题描述】:

我正在尝试制作一个将日志条目插入文本文件的程序。我遇到的问题是我逐行读取特定行的文件并希望在该行之前写入。 Python 正确地读取了我正在寻找的行,但是,当我试图回到之前的位置时,它不再读取整行。我检查了偏移量,它完全一样,但由于某种原因,整行没有被读取。

def fileWriter():
    immediateTrigger = 0
    returnTrigger = 0;
    with open('C:\\testData.txt', 'r+') as file:
        for line in iter(file.readline, ''):
            #line = file.readline()
            if 'Beginning of text entries' in line:
                print('arrived at text entries')
                print(file.tell())
                print(line)
                immediateTrigger = 1
                file_pos = file.tell()
            while not line.strip() and immediateTrigger == 1:
                #print('here')
                prev_pos = file.tell()
                print(str(prev_pos) + 'before')
                newLine = file.readline()
                print(newLine)
                if 'Text Entry 25' in newLine:
                    file.seek(prev_pos)
                    print(str(file.tell()) + 'after')
                    print(file.readline()')
                    immediateTrigger = 0

我会得到的输出是:

arrived at text entries
Text Entry 1: The 1st revision
(random entries...)
36800 before
Text Entry 25: The 25th revision
36800 after
try 25: The 25th revision

为什么会这样断掉?

【问题讨论】:

  • 如果您改用read(20),您会看到适当的输出吗?
  • 刚试过。它导致看到更多的条目,但仍然不是全部。开头仍然被切断。
  • 代码中两个打印文件光标前后位置的打印语句之间没有打印语句。但在你的输出中有一行额外的输出。这怎么可能?
  • 这不是精确的输出。很抱歉,但实际代码包含我无法发布的工作信息
  • 代码中缺少打印语句。已更正

标签: python python-2.7 file file-read


【解决方案1】:

我想我找到了解决方案。我不知道为什么,但是当我使用 rb+ 作为模式而不是 r+ 时,它读取整行就好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多