私は '印刷'の権利を正当化することについて質問しましたが、--helpのために同じ行にテキストを左右に置くことができますか?これは、ターミナルで次のようになりたい:Pythonの左と右に配置しますか?
| |
|Left Right|
| |
私は '印刷'の権利を正当化することについて質問しましたが、--helpのために同じ行にテキストを左右に置くことができますか?これは、ターミナルで次のようになりたい:Pythonの左と右に配置しますか?
| |
|Left Right|
| |
を私はあなたがこのためにsys.stdout
を使用することができると思う:
import sys
def stdout(message):
sys.stdout.write(message)
sys.stdout.write('\b' * len(message)) # \b: non-deleting backspace
def demo():
stdout('Right'.rjust(50))
stdout('Left')
sys.stdout.flush()
print()
demo()
あなたはhttps://stackoverflow.com/a/943921/711085
から取得することができ、正確なコンソール幅、と50
を置き換えることができますここで
'print message '(末尾にカンマ)を使用できませんでしたか? –
nifty。私はそれをコメントして編集したので、インタラクティブなpythonプロンプトとpython2とpython3の両方で動作します。正確な情報を得るには、「50」をhttp://stackoverflow.com/a/943921/711085から得られる値に置き換えてください。 – ninjagecko
@andrewcooke: '\ b'"は巻き戻します:行の先頭にカーソルがあるので、 'Left'を印刷するときに実際に行を上書きしています。 – Blender
かなり簡単な方法です:
>>> left, right = 'Left', 'Right'
>>> print '|{}{}{}|'.format(left, ' '*(50-len(left+right)), right)
|Left Right|
関数として:
def lr_justify(left, right, width):
return '{}{}{}'.format(left, ' '*(width-len(left+right)), right)
>>> lr_justify('Left', '', 50)
'Left '
>>> lr_justify('', 'Right', 50)
' Right'
>>> lr_justify('Left', 'Right', 50)
'Left Right'
>>> lr_justify('', '', 50)
' '
コマンドラインパーサーにはArgParseを使用していますか? –
右寄せについては、まず総出力スペースの幅を知る必要があります。あなたは? – delnan