recherche

Maison  >  Questions et réponses  >  le corps du texte

Python3 交互模式 next(文件) 之后 文件.tell() OSError 恢复的问题?

交互模式输入:

f = open( "Config.h", "r+", encoding="UTF-8" )
next(f)
f.tell()

这样会报错:

OSError: telling position disabled by next() call

原因可以理解
但是之后再在交互模式里输入 f.tell() 会报一样的错误
想来是 disabled by next() 还没被恢复
但是 f.seek 重设置一下之后 f.tell 就不会报错了
想问下具体细节是怎样的?
disabled by next() 如何被恢复的?
PS:呃,忘了说,是 Python3……
PS:我知道这是异常……

PHPzPHPz2818 Il y a quelques jours1556

répondre à tous(1)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:26:31

    SAD, je l'ai finalement résolu moi-même...
    Le code source suivant du fichier io définit le bit d'indicateur

    def __next__(self):
        self._telling = False
        line = self.readline()
        if not line:
            self._snapshot = None
            self._telling = self._seekable
            raise StopIteration
        return line
    

    Le drapeau sera détecté dans tell

    if not self._telling:
        raise OSError("telling position disabled by next() call")
    

    la recherche effacera le drapeau (le code est trop distribué pour être publié)
    Recherchez vous-même le code source pour plus de détails...

    répondre
    0
  • Annulerrépondre