subprocess | shell引数に True をセットすると subprocess はシェルを介してプロセスを生成してコマンド実行する。例:subprocess_test.py; 引数付きの時はtest_perl.py |
時間の扱い | timeについて, 例:date.pyではtimedelta(1)を使って1日前を計算できる。 unix-timeとUTCの関係(例date3.py), 2012-12-29 13:49:37の分解はdatetime.py)日付時間参照 |
プログラム例 | xmlファイルの読み方例 getEff.sh+xmlReader_eff.py |
, 関数 : →topへ | |
関数 def | function.py, 複数の戻り値の例はread_aliasDB.py |
SQRTなど | import.py, sqrtはimport mathとおいてから math.sqrt(x) とする。 |
繰り返し, 条件 : →topへ | |
複合文 | if, while, forなどはヘッダ: (indent)文1 (indent)文2 などindent(字下げ)が重要な意味を持つ。中の部分をブロックと呼ぶ。 |
while xx: | while.py, else:も使える。continue breakも使える。 |
for xx in u: | オブジェクトuから要素を順に変数に代入し、要素の数だけ繰り返しを行うー>for.py、else:も使える。 |
if XX!=2: else | 実行文はindentを下げる。2つの条件の結合は and or。ー>if.py |
基本 : →topへ | |
python | interpreterで1行ずつexcecuteできる1. exit()で終わる。lxplusではpython3で入る(2024年から?)。python3 --version |
基本構文 | if __name__ == "__main__": このif部分は、直接スクリプトとして呼び出した時のみ実行される。変数「__name__」には、スクリプトとして起動した際に「__main__」という値が入る。 別モジュールから呼び出された時は、自身のモジュール名が入るので実行されない。 |
shellからの変数引渡し | argv.py Python 3では引数の中にspaceが入っていると " "と' 'で違う扱いになるーー>Web link, version2だとspaceはそのまま渡される(例) |
コメント | #で始める。コマンドのあとでもいい。 |
エスケープシーケンス | \n(改行)\t(水平タブ)\0(NULL)\"(ダブルクオーテーション) |
行をつなげるには | 改行の直前に「\」 |
トリプルクオーテーション | """.......""" プログラム中で改行されている箇所は改行文字である「\n」が入力されていると見なされる。 |
raw文字列 | r"文字列"、R"文字列"などではエスケープシーケンスを無効にする。 |
文字列の連結と繰返し | "文字列1"+"文字列2"、join.pyもある。print ("-" * 40) |
print () | python3ではprintが関数化されたので()が必要になった。print ("Hello", print "Hello"+ str(num)), 同じ物なら+していい? print.py |
%演算子(モジュロ) | printのときの桁の調整: 幅の指定はprint "Hello! %10d %10d" % (a, b) # 精度の指定はprint ("Hello! %10.2f %10.2f" % (a, b)) |
数値計算 | 整数・長整数・浮動小数点・複素数などは変数に何らかのオブジェクトを代入した時点で作成が行われます。**2使える。modulesは x%y --->numerical.py 数学関数はimport mathでfabs, sqrt, sin, exp, log, log10.... |
%s , %d | %sはstring置き換え、%dは数字をstringにする。ー>substitution.py |
1文字置き換え | time = timetemp.replace(':',' ') timeはリスト型になる? |
文字列を数値に | i = int("123"), f = float("1.23"), l = long("123l"), c = complex("123") |
数値を文字列に | s = str(123), us = unicode(123), format(NC,'02') で2桁表示できる |
str(2000) | 数値などのオブジェクトを文字列に変換する組み込み関数,format(NC,'02') でも2桁表示できる |
文字の分割 | XXX.split()などーー>split.py |
文字列の合成 | ":".join([a,b,c])ーー>join.py |
len("Hello") | lenは組み込み関数で文字列の長さを示す。 |
シーケンス型の要素 | aaa[index] , indexは0から始まる。文字列もシーケンス型の一つ。スライス:aaa = "ABCDE", slice = aaa[1:3] とうると"BC"が取り出せる。 |
ビット演算子 | 整数に対してビット単位で演算を行うための演算子。 &(ビットAND) |(ビットOR)^(ビットXOR)~(ビット反転)a << b(aをbだけ左へシフト)a >> b(aをbだけ右へシフト) ==>bitshift.py |
変数 | 変数にはオブジェクトへの参照(どこにあるのかの情報だけ)を持っている)。変数に何らかのオブジェクトを代入した時点で作成される。num(変数) = 10(オブジェクト), name = u"加藤" など。予約語(and,del,for,is,else, if,print,in,or,while....)は使えない。 |
多重定義 | x, y, z = 1, 2, 3 や a = b = 123 |
累算代入文 | += -= *= /= //= %= **= >>= <<= &= ^= |= |
入出力 : →topへ | |
open, close, delete | f = open(filename, 'w')など。appendしたいときは"a"で。read-write.py, 削除はimport osしてからos.remove("file"). 存在はisfile()でわかる。read-and-split.py |
f.write | f.write(id+" "+date+" "+time+" "+VOLT+" "+CURRs+"\n") |
print "%4d-%2d-%02d" % (int(y),int(m),int(d))で2016-02-03と出せる。 | |
リスト型オブジェクト : →topへ | |
list | t = ["A", "B", "C"], tt=[10, [20, 16], [32, 34], 18] |
2次元配列.txt | arr = [[0 for i in range(3)] for j in range(5)]と定義すru. python2次元配列.txt |
.append() | t.append("C") --> append.py |
.extend() | t.extend(["D", "E"]), |
insert | t.insert(1, "D") |
del | t=["A","B","C"]; del t[1] で ["A","C"]; del t[0:1] で["B", "C"] [begin:end] endは含まないようだ。 |
.pop(n) | t=["A","B","C"]; t.pop(1) で ["A","C"]; |
.remove(X) | t=["A","B","C","B","D"]; t.remove("B")で["A","C","B","D"] 最初の要素を削除 |
slice追加・削除 | t[len(t):]=["E","F"], t[1:1]="a"も追加; t[1:3]=[]では[1][2]が削除される |
要素の存在 | t=["A","B","C"]; print "B" in tでTrueが出る。print "D" not in tでもTrueが出る。 |
.index() | t=["A","B","C"]; t.index("B")で1が出る。 |
.count() | t=["A","B","C","B","D"]; t.count("B")で2が出る。 |
.sort() | numlist = [5, 2, 3]; numlist.sort()で[2, 3, 5]になる。.reverse()は逆 ー>for.py |
.split('"') | idtemp = idline.split('"')で 「"」の区切りでリスト型idtempに分解している。「"」はなくなる。split()なら複数個のblankをも1つに数えてくれる。例:split.py, y,m,d = a[0].split("-")でいい。 |
range | list = range(2,5)は [2, 3, 4]を、list = range(5)は [0, 1, 2, 3, 4]; list = range(1, 6, 2)は[1, 3, 5]をつくる。 |
list関数 | list([sequence])でリスト作成する。list("ABC")は["A", "B", "C"];複数の時はzipをつかう |
タプル型オブジェクト : →topへ | |
タプル型 | 文字列やリスト型と同じくシーケンス型の一つです。タプルでは一度作成されたオブジェクトの要素を変更できません。またタプルにはメソッドが用意されていません。 |
tuple | t=(2005, 2006, 2007, 2008) 1個のときは,が必要t=(500,) |
tuple | print tuple("ABC") # ("A", "B", "C") |
辞書型オブジェクト : →topへ | |
辞書型 | マップ型の1つであり、複数の要素から構成されていますが、(シーケンス型と異なり)要素間には順序はない。インデックスで要素を取り出せないが、各要素にはキーと呼ばれる識別子を値と合わせて登録する。 |
作成 | dict = {"yamada":75, "endou":82} "yamada"はキー |
取得 | dict = {"yamada":75, "endou":82}、value = dict["yamada"] |
変更・追加 | dict = {"yamada":75, "endou":82}、dict["yamada"] = 78、ないキーを使えば追加になるdict["ito"] =11。 |
.update | dict.update({"honda":52, "kondo":92}) |
.pop() | val = dict.pop("endou") endouキーの要素は削除されvalに移る。 |
.popitem() | whille dict: tuple = dict.popitem()で空になるまで要素を取り出す。 |
.clear() | 空の辞書オブジェクトになる。 |
存在確認 | print "yamada" in dict # True;print "katou" in dict # False; print dict.has_key("kudou") も可能 |
.key | 辞書オブジェクトに含まれる全てのキーを要素としたリスト型のオブジェクトを返します。 |
.value | 辞書オブジェクトに含まれる全ての値を要素としたリスト型のオブジェクトを返します。 。 |
.items() | そのリストを取得するには |