Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21081

【Python3】ファイル操作の基礎を理解する

$
0
0

はじめに

Pythonでファイル操作するための基礎知識についてまとめます。

対象:Pythonの学習を始めた方向け
動作環境:Python3.8.3(OSはMacOS)

ファイルを読み書きする

ファイルを開く

openメソッド
  • 開く対象ファイルと、開き方(読込/書込)を指定します。
  • ファイルオブジェクトが返却されます。
  • ファイルを操作した後は、closeメソッドの実行が必要です(メモリから解放するため)。
f=open("filename","mode")
  • "mode"の種類
mode説明
r読込モード。      
w上書きモード。既存の内容は破棄する。 
a追記モード。ファイルの末尾へ追記する。 
xファイル新規作成専用の書込モード。ファイルが存在する場合はエラーを返却し、書込は行われない。  
r+読み書き両用モード。      

省略すると、"r"として処理されます。

  • ファイルの種類を扱う"mode"

前掲の"mode"と組み合わせて指定できます。

mode説明
tテキストモード。openメソッドのデフォルトモード。改行コードをプラットフォーム固有の記号から「\n」に変換する。 
bバイナリモード。テキストファイル以外はバイナリモードの利用を推奨。 
withキーワード

withキーワードを使うと必ずファイルオブジェクトはcloseされるので、try〜finallyで実装するより簡潔に書くことができます。

withopen("filename")asf:f.read()

ファイルオブジェクトのメソッド

f.read(size)
  • sizeに指定した値だけ、文字列 (テキストモードの場合) か bytes オブジェクト (バイナリーモードの場合) として返却します。
  • sizeは省略されたり負の数を指定された場合、ファイルの全内容を返却します。
  • ファイルの終端に達している場合、空の文字列 ('') を返却します。
>>>f.read(10)'Hello Pyth'
f.readline()
  • ファイルから1行のみ読み取り、返却します。
  • 終端に改行文字(\n)を含みます(改行文字を含まない最終行を除く)。
>>>f.readline()'Hello Python\n'
複数行の読込
  • ループ処理に効率的にファイルの読み込みを実行できます。
  • ファイルの全ての行をリスト形式で扱いたい場合は、list(f)やf.readlines()を使います。
>>>forlineinf:...print(line,end='')...HelloPythonHelloJavaHelloRuby
f.write(string)
  • stringの内容をファイルに書き込み、書き込まれた文字数を返却します。
  • ファイルを閉じるまで、witeメソッドを呼び出すごとに追記されます。
>>>withopen("sample.txt","w")asf:...f.write("Japan\n")...f.write("USA\n")...f.write("China\n")...646>>>withopen("sample.txt","r")asf:...f.read()...'Japan\nUSA\nChina\n'
f.tell()
  • ファイルの開いている現在の位置を示す整数を返却します。

  • 現在の位置が先頭の場合は「0」を返却

>>>withopen("sample.txt","r")asf:...f.tell()...0
  • 5バイト分読み込むと現在位置も移動
>>>withopen("sample.txt","r")asf:...f.read(5)...f.tell()...'Japan'5
f.seek(offset, whence)
  • ファイル位置を、基準点(whence)にオフセット値(offset)を加算して計算します。
  • whenceには0:先頭、1:現在の位置、2:終端を指定します。省略した場合は0:先頭として振る舞います。
>>>withopen("sample.txt","rb+")asf:...f.write(b"0123456789abcdef")...f.seek(3)#先頭から3バイト分
...f.read(1)...f.seek(-1,2)#終端から1バイト分
...f.read(1)...163b'3'15b'f'

おわりに

今回は基礎の基礎な内容でした。
次はCSVやjsonなどの扱いについて、理解を深めていきたいと思います(ライブラリが提供されているとのこと)。


Viewing all articles
Browse latest Browse all 21081

Trending Articles