メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年2月2日土曜日

[Python][お勉強] Python入門(16) - printステートメント

printステートメントについて見ていく。


printステートメントとは

オブジェクトをテキストに変換して標準出力ストリームに書き込む文のこと。


printステートメントの書き方

ステートメント説明
print spam, hamsys.stdoutにオブジェクトを出力する。項目と項目の間(カンマの位置)に自動的にスペースが入る。
print spam, ham,sys.stdoutにオブジェクトを出力する。項目と項目の間にスペースが入る。末尾のカンマは「改行文字が入らない」の意。
print >> myfile, spam, hamオブジェクト(テキスト)をsys.stdout.writeではなくmyfile.writeに送る


printステートメントのデフォルトの出力先はsys.stdoutである。sys.stdoutは標準出力を表す。
改行を入れたくない場合はステートメントの最後にカンマを入れる。

で、やってみっぺ。

>>> print "a","b",
a b
>>> print "a","b"
a b


トップレベルからでは改行されているのかされていないのかわからない・・・。

文字列フォーマットとprintステートメントのあわせ技

>>> print "Hello, %s" % "abc"
Hello, abc
>>>


ふーん。
同じことをsys.stdoutを使ってやってみる。
同じことをするにはsysモジュールをimportする。

>>> import sys
>>> sys.stdout.write('Hello, abc\n')
Hello, abc


うむ。できた。


出力先を変更する例
printステートメントの出力先をたとえばファイルにする場合。

>>> import sys
>>> sys.stdout = open('log.txt', 'a')
>>> print "aaa bbbb ccccc"
>>> sys.stdout = sys.__stdout__
>>>  # ここでCTRL+D
$ cat log.txt
aaa bbbb ccccc



標準出力からlog.txtへ変更した。log.txtにはprintした値が書かれている。
最後のsys.stdout = sys.__stdout__は、sys.stdoutの値を変更したので、元に戻している。
まったく同じことを「>>」を使用して行うことができる。


>>> log = open('log.txt','a')
>>> print >> log, "a", "b", "c"
>>> print "a", "b", "c"
a b c
>>> log.close()
>>>


>>を使用すると標準出力も機能したままとなるので便利。




おしまい。

0 コメント: