10

Python で標準入力を非バッファ モードに切り替えて、標準入力から 1 文字を読み取れるようにする必要がありました。私はなんとかそれを機能させましたが、今では標準出力が壊れています:改行文字の後にいくつかのスペース文字が出力され、最初の行にゼロ、2番目に3、3番目に6などのように見えます。 :

ASD
   ASD
      ASD

オペレーティング システムは Ubuntu Linux 12.04、64 ビット版、Python バージョンは 3.2.3 です。

どうすればこの行動から抜け出すことができますか?

以下は私が使用したコードです:

import sys
import tty
import termios

fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setraw(sys.stdin)

for i in range(0, 10):
    print("ASD")

termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
4

3 に答える 3

10

この同じ質問に対する答えを探していたときに、Google が私をここに連れてきました。改行なしのハレックスによって共有された手がかりは、真実を探すのに役立ちました. Chris の Wiki の投稿 ( https://utcc.utoronto.ca/~cks/space/blog/unix/CBreakAndRaw ) で答えを見つけたので、ここで tty.py のソースを読むようになりました: https://hg. python.org/cpython/file/618ea5612e83/Lib/tty.py これにより、目標が単一の文字を読み取ることである場合、次の代わりにという結論に達しました。

tty.setraw()

使用する:

tty.setcbreak()
于 2016-05-21T03:44:32.413 に答える
6

改行だけを行っているように見えますが、改行はしていません。プリントを次のように変更します

print("ASD", end="\r\n")
于 2012-09-01T22:12:38.727 に答える