最終更新:
bokkuri_orz 2014年10月11日(土) 22:05:16履歴
ファイルの先頭で
# coding: エンコーディング名 # coding=エンコーディング名
どちらでもOK。
文字コード種類。
※大文字小文字は区別されない。
# coding: utf-8 # coding: shift_jis # coding: euc-jp # coding: cp932
以下のように、ダブルクォーテーション3つ、あるいは、シングルクォーテーション3つで囲うことで、
コードの実行を無効化出来る。
正確には、文字列(ヒアドキュメント)になっている。
''' val0 = 100 val1 = 200 val3 = val0 + val1 ''' # シングルクォート、ダブルクォートを使ってネスト可能 ''' val0 = 100 """ val1 = 200 """ val3 = val0 + val1 '''
※アンダースコアは半角文字で。
特定のソースがスクリプトとして起動した時に、「__name__」 には "__main__" という文字列が代入される。
そのソースが別のモジュールから呼び出された時は、それ自信のモジュール名が 「__name__」 に代入される。
モジュールとして呼ばれたかどうかを判定して処理を分岐できる。
配列の指定範囲を取得する。
コロンを使って、
[開始要素のインデックス:終了要素の次のインデックス]
と指定する。
a = [0, 1, 2, 3, 4] print(a[1:3]) # -> [1, 2] print(a[-1:-4]) # -> [] print(a[-4:-1]) # -> [1, 2, 3] print(a[:2]) # -> [0, 1] print(a[3:]) # -> [3, 4] print(a[:]) # -> [0, 1, 2, 3, 4]
# 10回繰り返し。rangeは開始、終了間の連続した値を返し、終了値は含まない for val in range(0, 10): print val # タプルの繰り返し処理 for val in tuple: print val # リストの繰り返し処理 for val in list: print val
# 初期化
dict = {'key1':'val1', 'key2':'val2', 'key3':'val3'}
# ループ処理
for key in dict:
print key
print dict[key]
# キーをリスト化
key_list = dict.keys()
# キーの存在チェック(ver 2.x 系)
if dict.has_key('key1'):
print "exist"
# キーの存在チェック(ver 3.x 系)
if 'key1' in dict:
print "exist"
import sys # argvを利用するためのモジュール num = len(sys.argv) # 引数の個数 print sys.argv[0] # 一つ目は実行中のスクリプトファイル名 for i in range(1, num): print sys.argv[i] # 残りの引数
| 2.x系 | str型 unicode型 |
| 3.x系 | str型(内部でunicode情報を持つ) |
●2.x系
str1 = "test" str2 = u"テスト" print type(str1) # => <type 'str'> print type(str2) # => <type 'unicode'>
●3.x系
str1 = "test" str2 = "テスト" print(type(str1)) # => <class 'str'> print(type(str2)) # => <class 'str'>
違いは特になさそう。
例えばシングルクォート囲みの中にシングルクォートを使いたい場合は、円記号でエスケープが必要だけど、
その中でダブルクォートを使う場合はエスケープ不要。
その逆も同様。
str1 = 'I can\'t speak english.' str2 = "I can't speak english."
# 連結
str0 = "012"
str1 = "345"
str2 = str0 + str1
print str2 # -> 012345
# 数値 → 文字列
val0 = 100
print str(val0) # -> 100
# 置換
print str2.replace("345", "678") # -> 012678
# 分割
str3 = "1,2,3,4"
print str3.split(",") # -> ['1','2','3','4']
# ゼロ埋め
str4 = "1234"
print str4.zfill(8) # -> 00001234
print str4.rjust(8, "_") # -> ____1234
# 検索
str5 = "abcdefg"
# 文字列の先頭の検索
print str5.startswith("abc") # -> True
print str5.startswith("def") # -> False
# 文字列中の任意の場所の検索
print "cd" in str5 # -> True
print "hi" in str5 # -> False
# 先頭・末尾の空白削除
str6 = " aaa "
print str6.rstrip() # 末尾の空白削除 -> " aaa"
print str6.lstrip() # 先頭の空白削除 -> "aaa "
# 関数宣言(第3引数は省略可) def func(val0, val1, val2=10): return val0 + val1 + val2 # 関数呼び出し result = func(10, 20) # -> 40
- クラスのメソッドには self が必須。
- メンバ変数の宣言は無し。
# クラス宣言
class TestClass:
# コンストラクタ
def __init__(self, param):
self.param = param # メンバ変数
def output(self):
print("param = " + str(self.param))
# インスタンス生成
testClass = TestClass(100)
testClass.output() # -> param = 100
継承と、ついでにstaticメンバ変数、staticメソッドも。
# クラス宣言
class TestExtends(TestClass):
static_param = 0 # staticメンバ変数
def __init__(self, param):
TestClass.__init__(self, param)
def setParam(self, param):
TestExtends.static_param += 1
self.param = param
def outputStatic(self):
print("static_param = " + str(TestExtends.static_param))
# staticメソッド(第1引数は cls)
@classmethod
def static_method(cls):
TestExtends .static_param += 1
print("static_param = " + str(TestExtends.static_param))
# インスタンス生成、メソッド呼び出し
testClass = TestExtends(200)
testClass.setParam(300)
testClass.output() # -> param = 300
testClass.outputStatic() # -> static_param = 1
testClass.setParam(444)
testClass.output() # -> param = 444
testClass.outputStatic() # -> static_param = 2
# staticメソッド呼び出し
TestExtends.static_method() # -> static_param = 3
TestExtends.static_method() # -> static_param = 4
TestExtends.static_method() # -> static_param = 5
Python のクラスメソッド デコレータ @classmethod, @staticmethod
http://jutememo.blogspot.jp/2008/09/python-classme...
import codecs
f = codecs.open("text.txt", "r", "shift_jis") # その他の文字エンコード "euc_jp", "utf-8"
import os filepath = "c:/temp" if os.path.exists(filepath): print filepath + "is exist." if os.path.isfile(filepath): print filepath + " is file." if os.path.isdir(filepath): print filepath + " is directory." else: print filepath + " is not exist."
import os import shutil dir_path = "c:/temp" os.mkdir(dir_path) os.mkdirs(dir_path + "/path1/path2") #os.rmdir(dir_path + "/path1/path2") # 指定のディレクトリを削除 #os.removedirs(dir_path) # 削除対象のディレクトリが空でないとエラーになる #shutil.rmtree(dir_path) # 再帰的削除
import os
import shutil
shutil.copy("c:/temp/src.txt", "c:/temp/dst.txt") # ファイル名を変更してコピー
shutil.copytree("c:/temp/, "d:/temp") # ディレクトリコピー
import os.path
# ファイル名、拡張子の分離
filename = "hoge.txt"
name, ext = os.path.splitext(filename)
#str = os.path.splitext(filename) -> str[0]:ファイル名、str[1]:拡張子
# フルパスからファイル名を取得
filepath = "c:/temp/dir/filename.txt"
filename = os.path.basename(filepath)
# パスからディレクトリ名を取得
dirname = os.path.dirname('Users/user/Documents/test.txt')
●サブフォルダも含めて、すべてのファイルを取得。
import os list = os.listdir(‘/path/to/dir/’) for file in list: print file # ファイル名が出力される
●対象フォルダのファイルのみ取得
import glob list= glob.glob(‘/path/to/dir/*.*’) for file in list: print file # フルパスで出力される


最新コメント