.emacs
(add-hook 'python-mode-hook
'(lambda ()
(outline-minor-mode)
(setq outline-regexp " *\\(def \\|clas\\|#hea\\)")
(hide-sublevels 1)))
.emacs
に上記を記述しておくと,outline minor modeが使えて,def
やclass
などが折り畳まれるので長いコードも見易い.
import
>>> import numpy as np
こうすることで,後々numpyをnpと省略することができる.
help
>>> help(numpy)
>>> help(np.arange)
などとして,numpyのヘルプや関数のヘルプを見ることができる.
ipythonを使えば,
In [1]: np.arange?
として,?
を末尾につけることでヘルプを見ることができる.この場合,そのソースファイルの場所も示してくれる.
docstring
pythonでは,ファイルの先頭にあるコメントや,関数の先頭にあるコメントがdocstringとして扱われて,モジュールや関数のドキュメントとなる.help
コマンドなどで呼び出される.
u"""一行目はNAMEというブロック.
全体はDESCRIPTIONというブロックとなる.
先頭のuはutf-8を指定する文字列だよということ.
"""
def func():
u"""これは関数の説明.
関数宣言のすぐ後に書くべし.
"""
class newClass:
u"""これはnewClassの説明.
class宣言のすぐ後に書くべし.
"""
def foo():
u"""クラスnewClassの関数fooの説明
コメントを,reStructuredText形式で書いておくと
ウェブ表示の際にキレイかもしれない.
"""
ファイル入力
f=open('filename','r')
for line in f.readlines():
data= line.split()
x= data[0]
...
f.close
みたいな感じで,readlines()
関数や,readline()
関数などで読み込む.
readlines()
関数は,すべての行を読み込んでそれを配列として返す.
readline()
関数は,一行づつ読み込む.
ファイルの存在確認
>>> import os
>>> os.path.exists('hogedir/hogefile')
ファイル/フォルダの移動
shutil
を利用する.
src/hoge.txt
を,dst/
以下に移動したい場合,
>>> import shutil
>>> shutil.move('src/hoge.txt','dst/')
出力のフォーマット
古いフォーマット指定は,
"pi is 15.7f" % math.pi
'pi is 3.1415927'
"pi is %15.7f, e is %15.7f" % (math.pi,math.e)
'pi is 3.1415927, e is 2.7182818'
のように%
に続くタプルで値を代入する感じだった.
新しいフォーマット指定は,
'pi is {0:15.7f}, e is {1:15.7f}'.format(math.pi,math.e)
'pi is 3.1415927, e is 2.7182818'
のように,文字列のformat関数で値を代入する.文字列内に{}
でくくって,何番目の引数かとか,フォーマットとかを記述する.
>>> "{:>20}".format('test')
' test'
>>> "{:<20}".format('test')
'test '
>>> "{:^20}".format('test')
' test '
>>> "{:*^20}".format('test')
'********test********'
上記のように,左右や中央寄せと文字詰めなどが指定できる.
0で埋めた数値を出力したい場合,
>>> "{:05d}".format(123)
'00123'
文字列と数値の間の変換
>>> int("12")
12
>>> int("12.3")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12.3'
>>> float("12.3)
12.3
つまり,しっかりと整数を表す文字列をint
で変換すれば整数になるが,整数を表していない文字列を整数に変換しようとするとエラーとなる.
逆に数値を文字列に変換したい場合は,以下.
>>> str(math.pi)
'3.14159265359'
シェルコマンドを実行する
os.system
>>> import os
>>> os.system('ls')
main.py main.py~ mod1.py mod1.pyc
0
commands.getoutput
>>> import commands
>>> commands.getoutput('ls')
'main.py\nmain.py~\nmod1.py\nmod1.pyc'
subprocess.Popen
>>> import subprocess
>>> process.Popen(['sleep','10'])
>>> process.wait()
とすると,sleep 10
が終了するまで待つ.上の例で,process.pid
とすればプロセスIDを取得できる.
作業ディレクトリ関連
>>> os.getcwd()
で現在の作業ディレクトリを取得でき,
>>> os.chdir('hoge/foo/')
として,ディレクトリを移動できる.これは子プロセスでの話しなので,このpythonスクリプトを実行しても,そのプロセスが終了したら元のディレクトリに戻る.
時間計測
- 実経過時間の測定には
time.time()
関数. - CPU時間の測定には
time.clock()
関数.
import time
t0= time.time()
...
print time.time()-t0
などとして計測する.
配列の要素を消去する
>>> a= range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[4]
>>> a
[0, 1, 2, 3, 5, 6, 7, 8, 9]
>>> a.pop(3)
3
>>> a
[0, 1, 2, 5, 6, 7, 8, 9]
>>> a.remove(9)
>>> a
[0, 1, 2, 5, 6, 7, 8]
上記ように,del
とpop
とremove
がある.
やりだすとたくさんあるから,ここらでやめる.
あとは個別の投稿にすべきなんだろう.