便利なhelp(変数の型を調べる)
>>> a = 10 >>> type(a)>>> a = "test" >>> type(a) >>> a = [1, 2, 3] >>> type(a) >>> a = (1, 2, 3) >>> type(a) >>> a = {1:1, 2:2, 3:3} >>> type(a) >>> def b(): print "test" >>> a = b >>> type(a) >>> import urllib >>> a = urllib >>> type(a) >>> a = urllib.urlopen >>> type(a) >>> a = urllib.urlopen("http://www.google.co.jp") >>> type(a) >>> a = a.read() >>> type(a)
便利なhelp2(メソッド一覧取得)
メソッドがわからな〜いってときはdir()
>>> import urllib >>> x = urllib.urlopen("http://www.google.ne.jp") >>> dir(x) ['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'fileno', 'fp', 'geturl', 'headers', 'info', 'next', 'read', 'readline', 'readlines', 'url'] >>>html = x.read()
便利なhelp(モジュールのヘルプ)
対話モードの時、import したモジュールのヘルプが見れる。
>>>import string >>>help(string)
でモジュールのヘルプが表示される。(英語だけど...)
基本的なファイル・ディレクトリ操作
▼使い方
以下は、cドライブ直下にtest.txtが存在し、カレントディレクトリ(作業フォルダ)が"C:"であることを前提
(Pythonは"c:python23"にインストールされている状態を前提)
なお、Python Shell上では[¥]記号はバックスラッシュ(\)で表示される。
([c:¥¥]→[c:\\])
バックスラッシュを入力したいときは¥キーを押せばよい。
>>> import os >>> os.getcwd() #現在のカレントディレクトリを調べる 'C:\\' >>> os.chdir("c:\\python23") #カレントディレクトリを移動する >>> os.getcwd() 'C:\\python23' >>> os.chdir("C:\\") >>> os.getcwd() 'C:\\' >>> os.access("test.txt", os.F_OK) #ファイルが存在するか調べる True #True:有る。 False:無い。 >>> os.access("test.txt", os.R_OK) #ファイルが読み込み可能か調べる True >>> os.access("test.txt", os.W_OK) #ファイルが書き込み可能か調べる True >>> os.access("test.txt", os.X_OK) #ファイルが実行可能か調べる True >>> os.path.isdir("c:python23") #ディレクトリが存在するか調べる True >>> os.path.isdir("c:None") False >>> os.path.isdir("c:Filename.txt") False >>> os.path.abspath("test.txt") #絶対パスを調べる 'C:\\test.txt' >>> (dir, file) = os.path.split("c:python23/python.exe") #パスを分割する >>> print dir c:python23 >>> print file python.exe >>> os.path.join(dir, file) #パスを結合する 'c:python23\\python.exe' #パスの区切りは自動的にosに合わせてくれる。 >>> path = os.path.join(dir, file) >>> os.path.exists(path) True >>> os.mkdir("testFlder") #ディレクトリ(フォルダ)を作る >>> os.listdir("") #子ディレクトリとファイルのリストを返す #【実行結果は省略】 >>> import shutil >>> shutil.copyfile("test.txt", "copytest.txt") #ファイルをコピーする >>> shutil.move("test.txt", "c:\\testFlder") #ファイルを移動する >>> shutil.move("c:\\testFlder\\test.txt", "c:\\") >>> os.rmdir("testFlder") #ディレクトリを削除する >>> os.mkdir("testFlder") >>> shutil.move("copytest.txt", "c:\\testFlder") >>> os.rmdir("testFlder") #ファイルの入っているディレクトリは削除できない Traceback (most recent call last): File "", line 1, in -toplevel- os.rmdir("testFlder") OSError: [Errno 41] Directory not empty: 'testFlder' >>> shutil.rmtree("testFlder") #中身のファイルごとディレクトリを削除する。 >>> import glob >>> glob.glob("test.*") #ワイルドカードを使ってファイル検索(リストを返す) ['test.txt'] >>> os.remove("test.txt") #ファイルを削除する。
参考:
6.1.4 ファイルとディレクトリ
http://www.python.jp/doc/release/lib/os-file-dir.html
6.2 os.path -- 共通のパス名操作
http://www.python.jp/doc/release/lib/module-os.path.html
6.25 shutil -- 高レベルなファイル操作
http://www.python.jp/doc/release/lib/module-shutil.html
基本的なファイル操作
ファイル操作の手順は
1.ファイル開く(オープン)
2.ファイル弄る(読んだり、書いたり)
3.ファイル閉じる(クローズ)
ファイルのオープンにはfile()を使う。
書式は、
file("ファイル名", "フラグ")
open("ファイル名", "フラグ")は、file("ファイル名", "フラグ")でもOK*1
フラグでファイルモードを指定。
r 読み取り専用 w 書き込み専用 a 追加(ファイルを開く時、ファイルの参照点は自動的にファイルの末尾に移動する) r+ 更新(読み取りと書き込み) w+ ファイルを切り捨て(空にし)た後、そのファイルを読み書き用に開く a+ ファイルを読み書き用に開く、参照点は自動的にファイルの末尾に移動 b 他のオプションと一緒に指定すると、ファイルをバイナリモードで開く
練習用のテキストファイルを作る(text.txt)
1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ あいうえおかきくけこさしすせそ
ファイルは現在作業中のフォルダ(カレントディレクトリ)に保存することとする。
現在作業中のフォルダを知りたい時は以下
>>> import os >>> print os.getcwd()
作業中のフォルダを変更したい時は以下
>>> import os >>> os.chdir("c:\\")
Python Shell 上では¥記号は\(バックスラッシュとして表示される)→os.chdir("c:\\")
▼Python Shellで読み出しの練習
用語:ファイルポインタ(現在の読み込み、書き込み位置)
>>>f = file('text.txt','r') #text.txtをopen >>>f.readlines() #ファイルの中の行すべてを含んだリストを返す ['1234567890 ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ', 'あいうえおかきくけこさしすせそ'] >>>f.readline() #ファイルから1行だけ読み取る '' #readlinesの後なのでポインタがファイルの終端に >>>f.tell() #ポインタの現在位置 106L >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.tell() #ポインタがファイルの先頭に戻っているか確認 0L >>>f.readline() #もう一度ファイルから1行だけ読み取る '1234567890 ' >>>f.readline() #続けて一行 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ' >>>f.readline() #さらに一行 'あいうえおかきくけこさしすせそ ' >>>f.readline() #最後 '' >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.read(10) #10バイト分読む '12345' >>>f.read(10) #続けて10バイト分読む '67890' >>>f.seek(0) #ポインタをファイルの先頭に移動 None >>>f.read(2) #一文字(全角なので2バイト)だけ読む '1' >>>f.seek(10,0) #ファイルの先頭から10バイト分、ポインタを移動 >>>f.read(2) '6' >>>f.seek(20,1) #現在の位置から20バイト分、ポインタを移動 >>>f.read(2) 'F' >>>f.seek(-2,2) #ファイルの終端から2バイト分前へポインタを移動 >>>f.read(2) 'そ' >>>f.close() #ファイルを閉じる
ファイルに書き込むにはf.write(string)
text.txtに「abc」を追加してみる
>>>f = open('text.txt','a') >>>f.write('abc\n') #ファイルに追加するときは\n(改行コード)を最後に付ける None >>f.close()
text.txtを開くと
1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ あいうえおかきくけこさしすせそabc
となっているはず。
参考:
7.2 ファイルを読み書きする
http://www.python.jp/doc/release/tut/node9.html#SECTION009200000000000000000
2.3.8 ファイルオブジェクト
http://www.python.jp/doc/release/lib/bltin-file-objects.html
標準モジュール(ライブラリ)
モジュールは自分で作ることもできるけれど、Pythonには標準でついてくるモジュールが非常に豊富なので、ちょっとした使い捨てスクリプトを作るときにはほぼ事足りる。
参考:
10. 標準ライブラリの簡単なツアー
http://www.python.jp/doc/release/tut/node12.html
6. モジュール
http://www.python.jp/doc/release/tut/node8.html