Python には、ファイルの作成、書き込み、読み取りのための組み込み関数が用意されています。 Pythonで扱えるファイルには通常のテキストファイルとバイナリファイル(0と1のバイナリ言語で書かれたもの)の2種類があります。
- テキスト ファイル: このタイプのファイルでは、テキストの各行は EOL (End of Line) と呼ばれる特殊文字で終了します。これは、デフォルトでは Python の改行文字 (「
」) です。バイナリ ファイル: このタイプのファイルでは、行にターミネータがなく、データは機械が理解できるバイナリ言語に変換された後に保存されます。
注記: ファイル処理について詳しく知りたい場合 ここをクリック 。
アクセスモード
アクセス モードは、開かれたファイルで実行できる操作の種類を制御します。ファイルを開いた後にどのように使用されるかを指します。これらのモードは、ファイル内のファイル ハンドルの位置も定義します。ファイル ハンドルはカーソルのようなもので、ファイル内のどこからデータを読み書きする必要があるかを定義します。ファイルを読み取るためのさまざまなアクセス モードは次のとおりです。
- 読み取り専用 (「r」) : テキスト ファイルを読み取り用に開きます。ハンドルはファイルの先頭に配置されます。ファイルが存在しない場合は、I/O エラーが発生します。これは、ファイルが開かれるデフォルトのモードでもあります。読み取りおよび書き込み (「r+」) : 読み取りおよび書き込みのためにファイルを開きます。ハンドルはファイルの先頭に配置されます。ファイルが存在しない場合は I/O エラーが発生します。 Append and Read ('a+') : 読み取りと書き込みのためにファイルを開きます。ファイルが存在しない場合は作成されます。ハンドルはファイルの最後に配置されます。書き込まれるデータは、既存のデータの最後に挿入されます。
注記: アクセスモードについて詳しく知りたい場合 ここをクリック 。
ファイルを開く
これは open() 関数を使用して行われます。この機能のためにモジュールをインポートする必要はありません。
構文:
jsonデータの例
File_object = open(r'File_Name', 'Access_Mode')>
ファイルは Python プログラム ファイルと同じディレクトリに存在する必要があります。そうでない場合は、ファイル名の代わりにファイルの完全なアドレスを書き込む必要があります。 注記: ファイル名文字列内の文字が特殊文字として扱われないように、ファイル名の前に r が置かれます。たとえば、ファイル アドレスに emp がある場合、 はタブ文字として扱われ、アドレスが無効であるというエラーが発生します。 r は文字列を raw にします。つまり、文字列に特殊文字が含まれていないことを示します。ファイルが同じディレクトリ内にあり、アドレスが設定されていない場合、r は無視できます。
Python3
# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1> => open> ('MyFile.txt', 'r')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2> => open> (r'D:TextMyFile2.txt', 'r> +> ')> |
>
>
ここでは、file1 が MyFile1 のオブジェクトとして作成され、file2 が MyFile2 のオブジェクトとして作成されます。
ファイルを閉じる
close() 関数はファイルを閉じ、そのファイルによって獲得されたメモリ領域を解放します。ファイルが不要になった場合、または別のファイル モードで開く場合に使用されます。
構文:
File_object.close()>
Python3
Javaのデザインパターン
# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1> => open> ('MyFile.txt', 'r')> file1.close()> |
>
>
ファイルからの読み取り
テキスト ファイルからデータを読み取るには 3 つの方法があります。
- read() : 読み取ったバイトを文字列の形式で返します。 n バイトを読み取ります。n が指定されていない場合は、ファイル全体を読み取ります。
File_object.read([n])>
- readline() : ファイルの行を読み取り、文字列の形式で返します。指定された n について、最大 n バイトを読み取ります。ただし、n が行の長さを超えた場合でも、複数の行を読み取ることはありません。
File_object.readline([n])>
- readlines() : すべての行を読み取り、各行としてリスト内の文字列要素を返します。
File_object.readlines()>
注記: 「 」は 2 バイトの特殊文字として扱われます。
例:
Python3
# Program to show various ways to> # read data from a file.> # Creating a file> file1> => open> ('myfile.txt', 'w')> L> => ['This> is> Delhi
', 'This> is> Paris
', 'This> is> London
']> # Writing data to a file> file1.write('Hello
')> file1.writelines(L)> file1.close()> # to change file access modes> file1> => open> ('myfile.txt', 'r> +> ')> print> ('Output of Read function> is> ')> print> (file1.read())> print> ()> # seek(n) takes the file handle to the nth> # byte from the beginning.> file1.seek(> 0> )> print> ('Output of Readline function> is> ')> print> (file1.readline())> print> ()> file1.seek(> 0> )> # To show difference between read and readline> print> ('Output of Read(> 9> ) function> is> ')> print> (file1.read(> 9> ))> print> ()> file1.seek(> 0> )> print> ('Output of Readline(> 9> ) function> is> ')> print> (file1.readline(> 9> ))> print> ()> file1.seek(> 0> )> # readlines function> print> ('Output of Readlines function> is> ')> print> (file1.readlines())> print> ()> file1.close()> |
>
>
出力:
Output of Read function is Hello This is Delhi This is Paris This is London Output of Readline function is Hello Output of Read(9) function is Hello Th Output of Readline(9) function is Hello Output of Readlines function is ['Hello ', 'This is Delhi ', 'This is Paris ', 'This is London ']>
ステートメント付き
Python の with ステートメントは、コードをクリーンで読みやすくするために例外処理で使用されます。ファイル ストリームなどの共通リソースの管理が簡素化されます。上記の実装とは異なり、with ステートメントを使用する場合は file.close() を呼び出す必要はありません。 with ステートメント自体により、リソースの適切な取得と解放が保証されます。
構文:
with open filename as file:>
Python3
# Program to show various ways to> # read data from a file.> L> => ['This> is> Delhi
', 'This> is> Paris
', 'This> is> London
']> # Creating a file> with> open> ('myfile.txt', 'w') as file1:> > # Writing data to a file> > file1.write('Hello
')> > file1.writelines(L)> > file1.close()> # to change file access modes> with> open> ('myfile.txt', 'r> +> ') as file1:> > # Reading from a file> > print> (file1.read())> |
gimpでjpegとして保存
>
>
出力:
Hello This is Delhi This is Paris This is London>
注記: with ステートメントについて詳しく知りたい場合 ここをクリック 。