[Python 2.5][言語まとめ Python][Python 標準ライブラリ概観]
>>> help(__builtins__)
>>> dir(__builtins__)
>>> dir(オブジェクト)
#!python2.5
# -*- coding: utf-8 -*-
API |
概要 |
type() |
【組み込み関数】オブジェクトの型を返す |
import os
print 'os type:%s' %(type(os))
fils = os.listdir('c:\work')
print 'os.listdir type:%s' %(type(fils))
print 'listdir[0] type:%s' %(type(fils[0]))
- 結果
os type:<type 'module'>
os.listdir type:<type 'list'>
listdir[0] type:<type 'str'>
def check_dir(dir):
for o in glob.glob(os.path.join(dir,"*")):
if os.path.isdir(o):
check_package(o)
else:
print o
API |
概要 |
os.listdir |
ディレクトリ内容のリストを取得 |
import os
fs = os.listdir('c:\work')
for f in fs:
print f
API |
概要 |
os.path.isdir |
パスのディレクトリ判定 |
os.path.exists |
パスの存在判定 |
print 'C言語スタイルの書式文字' %(パラメータ) |
書式付出力 |
import os
basedir = 'c:\work'
fils = os.listdir(basedir)
print 'dir\texists\tpath'
print '------------------'
for fi in fils :
p = basedir + os.sep + fi
print '%s\t%s\t%s' %(str(os.path.isdir(p)), str(os.path.exists(p)), p)
API |
概要 |
os.chdir |
カレントディレクトリの変更 |
os.path.abspath |
絶対パスの取得 |
open |
【組み込み関数】ファイルを開く |
print の末尾に "," で、改行出力を抑制
import os
os.chdir('c:\work')
fils = os.listdir('.')
for fi in fils:
p = os.path.abspath(fi)
if not os.path.isdir(p) :
print '===== %s =====' %(fi)
f = open(p)
try:
for line in f:
print line,
finally:
f.close()
API |
概要 |
os.stat |
与えられたパスにstatシステムコールを実行 |
time.ctime |
エポックタイムからの秒数をローカル時間に変換 |
>>> import time
>>> import os
>>> r = os.stat(r'/test.txt')
>>> r
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=4508L, st_atime=1266996480L, st_mtime=1266452528L, st_ctime=1251076742L)
>>> ct = time.ctime(r.st_ctime)
>>> ct
'Mon Aug 24 10:19:02 2009'
>>> import os
>>> os.path.basename('c/work/test.txt')
'test.txt'
API |
概要 |
os.path.join |
2つ以上のパスを結合する。必要なら\を挿入 |
join(a, *p)
>>> import os
>>> p = os.path.join('c:\\', 'work', 'test')
>>> print p
c:\work\test
API |
概要 |
os.path.isdir(path) |
ディレクトリか否かを判定 |
>>> import os
>>> os.path.isdir('c:\work')
True
import os
import codecs
def csv_file_mearge(baseDir):
encode = "shift_jis"
subDir = "out"
repName = "mearged.txt"
os.makedirs(os.path.join(baseDir,subDir),exist_ok=True)
with codecs.open(os.path.join(baseDir,subDir,repName), 'w', encode) as outf:
files = os.listdir(baseDir)
for file in files:
print(file)
abspath = os.path.join(baseDir,file)
if os.path.isfile(abspath):
with codecs.open(abspath, 'r', encode) as inf:
for line in inf:
outf.write(line)
if __name__ == "__main__":
csv_file_mearge("c:\work\")
- 例1
import os
import pprint
def trav(path, fn=''):
l = []
l.append(fn)
d = os.path.join(path,fn)
if os.path.isdir(d):
for f in os.listdir(d):
l.append(trav(d,f))
return l
l = trav('C:\\', 'Python25')
pprint.pprint(l)
- 例2
# -*- coding: utf-8 -*-
import os
class FileTrav(object):
def traverse(self, working_dir, depth=0):
path = os.path.abspath(working_dir)
for f in os.listdir(path):
fl = os.path.join(path, f)
print '%s%s' % ('\t' * depth, fl)
if os.path.isdir(fl):
self.traverse(working_dir=fl, depth=depth + 1)
if __name__ == '__main__':
tp = FileTrav()
tp.traverse(working_dir=os.getcwd())
>>> l = []
>>> l.append('a')
>>> l.append('b')
>>> l
['a', 'b']
>>> ','.join(l)
'a,b'
リスト同士を結合する場合、extend を利用する
API |
概要 |
list() |
リストの生成、[リストの内容,・・・]で宣言と同時に初期化 |
[開始位置:終了位置:STEP] |
スライス。開始位置から終了位置までSTEPごとに切り出す |
#l = list()
l = [6,5,2,3,1,4]
l.append(7)
l.append(8)
l.sort()
print l
print l[::2]
print l[1::2]
- 結果
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 3, 5, 7]
[2, 4, 6, 8]
msg = 'this is message.'
l = list(msg)
print l
- 結果
['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'm', 'e', 's', 's', 'a', 'g', 'e', '.']
- リストや配列と異なり、用途や型が異なるオブジェクトをひとつにまとめるために使われる
- C言語の構造体を匿名にしたようなものと考えることができる
- ひとつの「かたまり」として変数に代入できる
- 関数の返り値として使うこともできる。これによって、複数の値を返す関数を実現することができる
- リストと同様に、個々の要素を添え字によって参照できる
- あくまで「ひとつの値」であるため、一度構築したら中の値を変更することができない
t1 = 1,'one',
t2 = 2,'two',
t3 = 3,'tree',
t = t1,t2,t3,
print t
- 結果
((1, 'one'), (2, 'two'), (3, 'tree'))
s = set('aaaabbbbccccddd')
print s
- 追加
s.add('123')
- 共通集合
s & set([1,2,3])
- その他
- union:和集合を返す
- intersection:共通集合を返す
- difference:差集合を返す
- symmetric_difference:対称的差集合を返す
- add:追加
- remove:削除
- 結果
set(['a', 'c', 'b', 'd'])
>>> m = {'a':1,'b':2,'c':1,'d':2}
>>> for k, v in m.iteritems():
... print '%s,%s' % (k, v)
...
a,1
c,1
b,2
d,2
>>> m = {'a':1,'b':2,'c':1,'d':2}
>>> m2 = dict([(k, v) for k, v in m.iteritems() if v == 1])
>>> m2
{'a': 1, 'c': 1}
>>> m = {'a':1,'b':2}
>>> m1 = {'c':3,'d':4}
>>> m.update(m1)
>>> m
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
#!python2.5
# -*- coding: utf-8 -*-
import sqlite3
con = sqlite3.connect('/work/py/test.db')
#create database in RAM
#con = sqlite3.connect(':memory:')
con.execute("create table test (id text, value text, note text)")
con.execute("insert into test values('1','aaa','01')")
con.execute("insert into test values('2','bbb','02')")
con.execute("insert into test values('3','ccc','01')")
con.commit()
p = ('01',)
c = con.cursor()
c.execute("select * from test where note=?", p)
for r in c:
print r
con.close()
- 結果
(u'1', u'aaa', u'01')
(u'3', u'ccc', u'01')
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.