f = open('hoge.txt') ※ファイルを開く
キーワード引数[encoding]で文字コードの指定ができます([sjis][euc-jp][utf-8]等)
キーワード引数[newline]で改行コードの指定ができます([\n]等)
f.read( n ) ※読み込む文字数を指定できる。(省略した場合は全文を返却する)
f.close() ※ファイルを閉じる
f.seek( n ) ※ファイルポインタを操作する( n=0 で最初に戻る)
※n はバイト単位なので注意! utf-8 だと 0 の次は 3 となります。
for l in f.readlines():
print(l) ※1行単位で読み込む
print(f.read()) ※全文読み込む(これを for で回すと1文字単位で取得する事も可能)
※f.read().encode('cp932') ※必要であれば文字コードを変換できる(windows の文字コード)
● コンテキストブロックを利用する
[with]ブロックを利用するとブロックの終わりやエラーの際は勝手に close されます。
例)
with open('hoge.text') as f:
f.read()
~ 色々処理 ~
● openメソッドのモード
第2引数でモードを指定できます。
r ファイルの読み込み ※デフォルト
w ファイルへの上書き/指定したファイルがない場合は新規作成
a 指定したファイルの末尾に追記する
rb ファイルの読み込み(バイナリファイル)
wb ファイルへの上書き/指定したファイルがない場合は新規作成(バイナリファイル)
wa 指定したファイルの末尾に追記する(バイナリファイル)
※テキストファイルを扱う場合は本来 rt wt at とするが省略できる
● 文字の追加
例)
with open('/home/guest/python15h/chapter01/hoge.text','a') as f:
f.write('\nついか')
※ファイル[hoge.tet]は、改行され「ついか」と表示されている
● ファイルを1行単位で確認する
そもそも open メソッドで返却された変数はファイルの内容を1行単位で返却するイテレータとなっている
例)
with open('/home/guest/python15h/chapter01/hoge.text','r') as f:
for l in f:
print(l) ※1行単位で表示される
● ユーザー入力
標準入力より値を受け取る
例)
a = input('入力してください:')
print( a )
os モジュールをインポートすると便利なメソッドが使える
os.listdir( パス) ※パスに存在する[ファイル名][ディレクトリ名]をリスト型で返却する
例)
import os
mydir = os.listdir('/home/guest/python15h')
※[~/python15h]にあるファイル名、ディレクトリ名をリスト型で受け取る
if 'chapter01' in mydir: ※[chapter01]が存在するか確認
print('OK')
else:
print('NG')
os.mkdir( 'hoge' ) ※カレントディレクトリに[hoge]ディレクトリを作成する
os.mkdir( 'hoge/foo/bar' ) ※カレントディレクトリから[./hoge/foo]に[bar]ディレクトリを作成する
※[hoge][foo]ディレクトリが存在しない場合はエラーとなる
os.makedirs( 'hoge/foo/bar' )
※カレントディレクトリから[./hoge/foo]に[bar]ディレクトリを作成するが、[hoge][foo]ディレクトリが存在しない場合は作成する。
os.walk( パス )
※パス以下の[検索ディレクトリ名][見つかったディレクトリ名のリスト][見つかったファイル名のリスト]を返却するイテレータを返却する
例)
import os
for myRoot,myDir,myFile in os.walk('/home/guest/python15h'):
※[python15h]ディレクトリ以下を再帰的に検索できる
if 'hoge.txt' in myFile: ※[hoge.txt]がリスト型で受けた[myFile]に存在した場合は
print('hoge.txtは')
print('パス:[' + myRoot + ']にいます') ※文字列で受けた[myRoot]を表示する
break
os モジュールをインポートすると便利なメソッドが使える
例)
os.path.dirname(os.path.abspath(__file__)) ※実行ファイルのフルパスを取得(ファイル名を除く)
os.path.join( 'hoge', 'foo', 'bar' ) ※パスを作成する(OSの違いによる表記を吸収できる)
Linux の場合は[hoge/foo/bar]が返却される
os.path.split( 'hoge/foo/bar' ) ※最後の区切り文字から分割し、タプル型で返却する。
('hoge/foo', 'bar')が返却される
os.path.split( 'hoge/foo/bar/' ) ※最後の区切り文字から分割し、タプル型で返却する。
('hoge/foo/bar', '')が返却される
os.path.dirname( 'hoge/foo/bar/hoge.txt' ) ※[hoge.txt]のいるディレクトリのパスを文字列で返却する。
「hoge/foo/bar」が返却される
os.path.basename( 'hoge/foo/bar/hoge.txt' ) ※パス上にある最終的な[ディレクトリ名]や[ファイル名]を文字列で返却する。
「hoge.txt」が返却される
os.path.abspath(__file__) ※実行ファイルのフルパスを取得(ファイル名含む)