2
從我所知道的,sys.stdout
是一個文件,表示一個終端的標準輸出。然而,當我嘗試使用sys.stdout.seek
,無論參數我給它,它拋出一個錯誤:我不能sys.stdout.seek
IOError: [Errno 29] Illegal seek
這是怎麼回事?是我使用TTY本身而不是像xterm這樣的虛擬終端的事實嗎?我該如何解決這個問題?
從我所知道的,sys.stdout
是一個文件,表示一個終端的標準輸出。然而,當我嘗試使用sys.stdout.seek
,無論參數我給它,它拋出一個錯誤:我不能sys.stdout.seek
IOError: [Errno 29] Illegal seek
這是怎麼回事?是我使用TTY本身而不是像xterm這樣的虛擬終端的事實嗎?我該如何解決這個問題?
當stdout是TTY時,它是一個字符設備,它不可查找,您不能在TTY中使用seek
。同爲tell
,它沒有實現:
>>> sys.stdout.tell()
IOError: [Errno 29] Illegal seek
但是,當您重定向標準流例如文件在shell:
$ my program > ouput.txt
現在你可以seek
從標準輸出,標準輸出現在是一個文件。
請看看這個參考,如果你使用Unix工作:
Understanding character device (or character special) files。
哦,你必須使用Python 2. Python 3.6的錯誤如下所示:'io.UnsupportedOperation:基礎流不可搜索。 –
您只能在普通文件中查找。你在尋找TTY時究竟會發生什麼? –
它是類似文件的文件,但實際上不是文件 –