pythonコマンド集のページ

2024.1.16 Taka Kondo's personal command memos:   Linux   ROOT   C++   html   Perl   Python   TeX   TWiki   shell   vi   emacs |
link to: Python入門 | Python-izm | BasicPython_ATLAS
このページ->基本関数ループ入出力リストタプル型辞書型
   
subprocessshell引数に 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へ
関数 deffunction.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, deletef = 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")
printprint "%4d-%2d-%02d" % (int(y),int(m),int(d))で2016-02-03と出せる。
リスト型オブジェクト : →topへ
listt = ["A", "B", "C"], tt=[10, [20, 16], [32, 34], 18]
2次元配列.txtarr = [[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"]),
insertt.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("-")でいい。
rangelist = 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,)
tupleprint 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。
.updatedict.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()そのリストを取得するには