python file handling tutorial
実践的な例を使用したPythonファイル処理操作の詳細:
のシリーズで 初心者のためのPythonチュートリアル 、私たちはについてもっと学びました Python文字列関数 前回のチュートリアルで。
Pythonは、ファイルからデータを読み取り、ファイルにデータを書き込むための重要な機能を提供します。
ほとんどの場合、プログラミング言語では、すべての値またはデータは、本質的に揮発性のあるいくつかの変数に格納されます。
データは実行時にのみこれらの変数に格納され、プログラムの実行が完了すると失われるためです。したがって、ファイルを使用してこれらのデータを永続的に保存することをお勧めします。
学習内容:
- Pythonはファイルをどのように処理しますか?
- Pythonのファイルの種類
- Pythonファイル処理操作
- ファイルでのエンコード
- バイナリファイルからのデータの書き込みと読み取り
- ファイルI / O属性
- Pythonファイルメソッド
- 概要
- 推奨読書
Pythonがファイルを処理する方法 ?
多数のデータを処理する大規模なソフトウェアアプリケーションで作業している場合、変数は本質的に揮発性であるため、これらのデータが変数に格納されることは期待できません。
したがって、このような状況に対処しようとすると、ファイルの役割が明らかになります。
ファイルは本質的に不揮発性であるため、データはハードディスクなどのセカンダリデバイスに永続的に保存され、Pythonを使用してこれらのファイルをアプリケーションで処理します。
Pythonがファイルを処理する方法について考えていますか?
取りましょう 例 普通の人がファイルをどのように扱うかについて。ファイルからデータを読み取ったり、ファイルにデータを書き込んだりする場合は、まずファイルを開くか、ファイルが存在しない場合は新しいファイルを作成してから、通常の読み取り/書き込み操作を実行します。 、ファイルを保存して閉じます。
同様に、いくつかの組み込みメソッドまたは関数を使用して、Pythonで同じ操作を実行します。
Pythonのファイルの種類
Pythonには2種類のファイルがあり、それぞれをわかりやすくするために例を挙げて詳細に説明します。
彼らです:
- バイナリーファイル
- テキストファイル
Pythonのバイナリファイル
コンピュータシステムに表示されるファイルのほとんどは、バイナリファイルと呼ばれます。
例:
- ドキュメントファイル: .pdf、.doc、.xlsなど。
- 画像ファイル: .png、.jpg、.gif、.bmpなど。
- ビデオファイル: .mp4、.3gp、.mkv、.aviなど。
- オーディオファイル: .mp3、.wav、.mka、.aacなど。
- データベースファイル: .mdb、.accde、.frm、.sqliteなど。
- アーカイブファイル: .zip、.rar、.iso、.7zなど。
- 実行可能ファイル: .exe、.dll、.classなど。
推奨読書= >> .7zファイルを開く方法
すべてのバイナリファイルは特定の形式に従います。通常のテキストエディタでいくつかのバイナリファイルを開くことはできますが、ファイル内にあるコンテンツを読み取ることはできません。これは、すべてのバイナリファイルがバイナリ形式でエンコードされるためです。バイナリ形式は、コンピューターまたはマシンでのみ理解できます。
このようなバイナリファイルを処理するには、それを開くための特定の種類のソフトウェアが必要です。
例えば、 .docバイナリファイルを開くには、MicrosoftWordソフトウェアが必要です。同様に、.pdfバイナリファイルを開くにはpdfリーダーソフトウェアが必要であり、画像ファイルなどを読み取るにはフォトエディタソフトウェアが必要です。
Pythonのテキストファイル
テキストファイルには特定のエンコーディングはなく、通常のテキストエディタ自体で開くことができます。
例:
- Web標準: html、XML、CSS、JSONなど。
- ソースコード: c、app、js、py、javaなど。
- ドキュメント: txt、tex、RTFなど。
- 表形式のデータ: csv、tsvなど。
- 構成: ini、cfg、regなど。
このチュートリアルでは、いくつかの古典的な例を使用して、テキストファイルとバイナリファイルの両方を処理する方法を説明します。
Pythonファイル処理操作
最も重要なのは、Pythonがファイルに対して処理できる操作には次の4種類があります。
- 開いた
- 読んだ
- 書く
- 閉じる
その他の操作は次のとおりです。
- 名前を変更する
- 削除
Pythonでファイルを作成して開く
Pythonには、ファイルを開くためのopen()という関数が組み込まれています。
以下の構文で説明されているように、少なくとも1つの引数を取ります。 openメソッドは、書き込み、読み取り、およびその他の組み込みメソッドにアクセスするために使用されるファイルオブジェクトを返します。
構文:
file_object = open(file_name, mode)
ここで、file_nameは、開くファイルの名前またはファイルの場所であり、file_nameにはファイル拡張子も含める必要があります。つまり、 test.txt –テストという用語はファイルの名前であり、.txtはファイルの拡張子です。
open関数構文のモードは、ファイルに対して実行する操作としてPythonに指示します。
- ‘r’ –読み取りモード: 読み取りモードは、ファイルからデータを読み取るためにのみ使用されます。
- 「w」–書き込みモード: このモードは、ファイルにデータを書き込んだり、ファイルを変更したりする場合に使用します。書き込みモードは、ファイルに存在するデータを上書きすることを忘れないでください。
- 「a」–追加モード: 追加モードは、ファイルにデータを追加するために使用されます。データはファイルポインタの最後に追加されることに注意してください。
- 「r +」–読み取りまたは書き込みモード: このモードは、同じファイルからデータを読み書きする場合に使用されます。
- 「a +」–追加または読み取りモード: このモードは、ファイルからデータを読み取ったり、同じファイルにデータを追加したりする場合に使用されます。
注意: 上記のモードは、テキストファイルを開く、読み取る、または書き込むためだけのものです。
バイナリファイルを使用している間、文字と同じモードを使用する必要があります 「B」 最後に。 Pythonがバイナリファイルとやり取りしていることを理解できるようにするためです。
- 'Wb'- 書き込み専用モードのファイルをバイナリ形式で開きます。
- ‘rb’ – 読み取り専用モードのファイルをバイナリ形式で開きます。
- 「from」- バイナリ形式でモードのみを追加するためのファイルを開きます。
- ‘rb +’ – バイナリ形式で読み取りおよび書き込み専用モードのファイルを開きます。
- 「from +」- 追加用のファイルを開き、バイナリ形式で読み取り専用モードにします。
例1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
上記の例では、「C:/ Documents / Python /」の場所にある「test.txt」という名前のファイルを開いており、同じファイルを読み取り/書き込みモードで開いているため、柔軟性が向上しています。
例2:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
上記の例では、「C:/ Documents / Python /」の場所にある「img.bmp」という名前のファイルを開いていますが、ここではバイナリファイルを開こうとしています。
Pythonのファイルからの読み取り
Pythonでファイルを読み取るには、ファイルを読み取りモードで開く必要があります。
Pythonでファイルを読み取る方法は3つあります。
- read((n))
- readline((n))
- readlines()
ここで、nは読み取るバイト数です。
まず、以下のようなサンプルテキストファイルを作成しましょう。
次に、各読み取りメソッドの機能を観察してみましょう。
例1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
出力:
こんにちは
ここでは、ファイルtest.txtを読み取り専用モードで開き、my_file.read(5)メソッドを使用してファイルの最初の5文字のみを読み取っています。
出力:
例2:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
出力:
こんにちは世界
こんにちはPython
おはようございます
ここでは、read()関数内に引数を指定していません。したがって、ファイル内に存在するすべてのコンテンツを読み取ります。
出力:
例3:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
出力:
彼
この関数は、次の行の最初の2文字を返します。
出力:
例4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
出力:
アンドロイドのための最高のmp3ダウンロードアプリ
こんにちは世界
この関数を使用すると、ファイルの内容を1行ずつ読み取ることができます。
出力:
例5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
出力:
(「HelloWorld n」、「Hello Python n」、「GoodMorning」)
ここでは、改行文字を含む、テキストファイル内に存在するすべての行を読み取っています。
出力:
次に、ファイルを読み取るためのより実用的な例をいくつか見てみましょう。
ファイルから特定の行を読み取る
line_number = 4 fo = open(“C:/Documents/Python/test.txt”, ’r’) currentline = 1 for line in fo: if(currentline == line_number): print(line) break currentline = currentline +1
出力:
お元気ですか
上記の例では、4つだけを読み取ろうとしています。th「test.txt」ファイルの行を使用して 「forループ」 。
出力:
ファイル全体を一度に読み取る
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
出力:
こんにちは世界
こんにちはPython
おはようございます
お元気ですか
出力:
Pythonのファイルへの書き込み
データをファイルに書き込むには、ファイルを書き込みモードで開く必要があります。
書き込み中のファイル内に存在するコンテンツが上書きされ、以前のデータがすべて消去されるため、ファイルへのデータの書き込みには細心の注意を払う必要があります。
以下に示すように、ファイルにデータを書き込む方法は2つあります。
- write(string)
- writelines(list)
例1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
上記のコードは、文字列「HelloWorld」を「test.txt」ファイルに書き込みます。
test.txtファイルにデータを書き込む前に:
出力:
例2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
最初の行は「HelloWorld」になり、 n文字について説明したように、カーソルはファイルの次の行に移動してから「HelloPython」と記述します。
UNIXでのgrepコマンドの使用
n文字について言及しない場合、データは「HelloWorldHelloPython」のようなテキストファイルに継続的に書き込まれることに注意してください。
出力:
例3:
fruits = (“Apple
”, “Orange
”, “Grapes
”, “Watermelon”) my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
上記のコードは データのリスト 同時に「test.txt」ファイルに追加します。
出力:
Pythonをファイルに追加
データをファイルに追加するには、ファイルを「a +」モードで開いて、追加モードと書き込みモードの両方にアクセスできるようにする必要があります。
例1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
上記のコードは、文字列「Apple」をに追加します 終わり 「test.txt」ファイルの
出力:
例2:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
上記のコードは、「test.txt」ファイルの最後に文字列「Apple」を追加します 新しい行で 。
出力:
例3:
fruits = (“
Banana”, “
Avocado”, “
Figs”, “
Mango”) my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
上記のコード データのリストを追加します 「test.txt」ファイルに。
出力:
例4:
text=('
Hello','
Hi','
Python') my_file=open('C:/Documents/Python/test.txt',mode='a+') my_file.writelines(text) print('where the file cursor is:',my_file.tell()) my_file.seek(0) for line in my_file: print(line)
上記のコードでは、データのリストを「test.txt」ファイルに追加しています。ここでは、カーソルが現在どこにあるかを出力するtell()メソッドを使用したことがわかります。
シーク(オフセット): オフセットは、0、1、2の3種類の引数を取ります。
オフセットが0の場合: 参照はファイルの先頭に示されます。
オフセットが1の場合: 参照は現在のカーソル位置を指します。
オフセットが2の場合: 参照はファイルの最後に示されます。
出力:
Pythonクローズファイル
ファイルを閉じるには、最初にファイルを開く必要があります。 Pythonには、開いているファイルを閉じるためのclose()という組み込みメソッドがあります。
ファイルを開くときは常に、特にwriteメソッドを使用してファイルを閉じることが重要です。 writeメソッドの後でclose関数を呼び出さないと、ファイルに書き込んだデータがファイルに保存されないためです。
例1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
例2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Pythonの名前の変更またはファイルの削除
Pythonは、ファイルの名前変更や削除などのファイル操作の実行に役立ついくつかの組み込みメソッドを備えた「os」モジュールを提供します。
このモジュールを使用するには、まず、プログラムに「os」モジュールをインポートしてから、関連するメソッドを呼び出す必要があります。
rename()メソッド:
このrename()メソッドは、現在のファイル名と新しいファイル名の2つの引数を受け入れます。
構文:
os.rename(current_file_name, new_file_name)
例1:
import os os.rename(“test.txt”, “test1.txt”)
ここで、「test.txt」は現在のファイル名であり、「test1.txt」は新しいファイル名です。
以下の例に示すように、場所を指定できます。
例2:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
ファイルの名前を変更する前に:
上記のプログラムを実行した後
remove()メソッド:
xboxoneと互換性のある仮想現実
remove()メソッドを使用して、削除するファイル名またはファイルの場所を指定してファイルを削除します。
構文:
os.remove(file_name)
例1:
import os os.remove(“test.txt”)
ここで、「test.txt」は削除するファイルです。
同様に、次の例に示すように、ファイルの場所も引数に渡すことができます。
例2:
import os os.remove(“C:/Documents/Python/test.txt”)
ファイルでのエンコード
ファイルエンコーディングは、文字をマシンだけが理解できる特定の形式に変換することを表します。
以下に示すように、マシンごとにエンコード形式が異なります。
- Microsoft WindowsOSは ‘cp1252’ デフォルトのエンコード形式。
- LinuxまたはUnixOSは 「utf-8」 デフォルトのエンコード形式。
- AppleのMACOSは 「utf-8」または「utf-16」 デフォルトのエンコード形式。
いくつかの例でエンコード操作を見てみましょう。
例1:
my_file = open(“C:/Documents/Python/test.txt”, mode=”r”) print(“Microsoft Windows encoding format by default is:”, my_file.encoding) my_file.close()
出力:
デフォルトのMicrosoftWindowsエンコーディング形式はcp1252です。
ここでは、Windowsマシンでプログラムを実行したため、デフォルトのエンコーディングが「cp1252」として出力されています。
出力:
ファイルを引数としてopen関数に渡すことにより、ファイルのエンコード形式を変更することもできます。
例2:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
出力:
ファイルのエンコード形式は次のとおりです。cp437
出力:
例3:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”utf-16”) print(“File encoding format is:”, my_file.encoding) my_file.close()
出力:
ファイルのエンコード形式は次のとおりです。utf-16
出力:
バイナリファイルからのデータの書き込みと読み取り
バイナリファイルは、マシンが理解できるバイナリ形式(0と1)でデータを保存します。したがって、マシンでバイナリファイルを開くと、データがデコードされ、人間が読める形式で表示されます。
例:
#バイナリファイルを作成しましょう。
my_file = open(“C:/Documents/Python/bfile.bin”, “wb+”) message = “Hello Python” file_encode = message.encode(“ASCII”) my_file.write(file_encode) my_file.seek(0) bdata = my_file.read() print(“Binary Data:”, bdata) ntext = bdata.decode(“ASCII”) print(“Normal data:”, ntext)
上記の例では、最初にバイナリファイルを作成しています 'Bfile.bin' 読み取りおよび書き込みアクセスを使用し、ファイルに入力するデータはすべて、writeメソッドを呼び出す前にエンコードする必要があります。
また、データをデコードせずに印刷しているため、エンコード時にデータがファイル内で正確にどのように見えるかを確認できます。また、人間が読めるようにデコードして同じデータを印刷しています。
出力:
バイナリデータ:b’Hello Python ’
通常のデータ:Hello Python
出力:
ファイルI / O属性
属性 | 説明 |
---|---|
readlines() | ファイルからすべての行を読み取り、返します |
名前 | ファイルの名前を返します |
モード | ファイルの戻りモード |
エンコーディング | ファイルのエンコード形式を返します |
閉まっている | ファイルが閉じられた場合はtrueを返し、そうでない場合はfalseを返します |
例:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) print(“What is the file name? ”, my_file.name) print(“What is the file mode? ”, my_file.mode) print(“What is the encoding format? ”, my_file.encoding) print(“Is File closed? ”, my_file.closed) my_file.close() print(“Is File closed? ”, my_file.closed)
出力:
ファイル名は何ですか? C:/Documents/Python/test.txt
ファイルモードとは何ですか? r
エンコード形式は何ですか? cp1252
ファイルは閉じられていますか?誤り
ファイルは閉じられていますか?本当
出力:
ファイルの他のいくつかの方法を試してみましょう。
例:
my_file = open(“C:/Documents/Python/test.txt”, “w+”) my_file.write(“Hello Python
Hello World
Good Morning”) my_file.seek(0) print(my_file.read()) print(“Is file readable: ?”, my_file.readable()) print(“Is file writeable: ?”, my_file.writable()) print(“File no:”, my_file.fileno()) my_file.close()
出力:
こんにちはPython
こんにちは世界
おはようございます
ファイルは読み取り可能ですか:?本当
ファイルは書き込み可能ですか:?本当
ファイル番号:3
出力:
Pythonファイルメソッド
関数 | 説明 |
---|---|
開いた() | ファイルを開くには |
閉じる() | 開いているファイルを閉じる |
fileno() | ファイルの整数を返します |
read(n) | ファイルから「n」文字をファイルの終わりまで読み取ります |
読み取り可能() | ファイルが読み取り可能である場合はtrueを返します |
読み込まれた行() | ファイルから1行を読み取って返します |
シーク(オフセット) | オフセットで指定されたバイト単位でカーソル位置を変更します |
seekable() | ファイルがランダムアクセスをサポートしている場合はtrueを返します |
tell() | 現在のファイルの場所を返します |
writable() | ファイルが書き込み可能である場合はtrueを返します |
書く() | データの文字列をファイルに書き込みます |
writelines() | データのリストをファイルに書き込みます |
エンドエンドプログラムでこれまでに説明したことを見てみましょう。
例:
my_file = open('C:/Documents/Python/test.txt', mode='w+') print('What is the file name? ', my_file.name) print('What is the mode of the file? ', my_file.mode) print('What is the encoding format?', my_file.encoding) text = ('Hello Python
', 'Good Morning
', 'Good Bye') my_file.writelines(text) print('Size of the file is:', my_file.__sizeof__()) print('Cursor position is at byte:', my_file.tell()) my_file.seek(0) print('Content of the file is:', my_file.read()) my_file.close() file = open('C:/Documents/Python/test.txt', mode='r') line_number = 3 current_line = 1 data = 0 for line in file: if current_line == line_number: data = line print('Data present at current line is:', data) break current_line = current_line + 1 bin_file = open('C:/Documents/Python/bfile.exe', mode='wb+') message_content = data.encode('utf-32') bin_file.write(message_content) bin_file.seek(0) bdata = bin_file.read() print('Binary Data is:', bdata) ndata = bdata.decode('utf-32') print('Normal Data is:', ndata) file.close() bin_file.close()
出力:
ファイル名は何ですか? C:/Documents/Python/test.txt
ファイルのモードは何ですか? w +
エンコード形式は何ですか? cp1252
ファイルのサイズは次のとおりです:192
カーソル位置はバイト:36
ファイルの内容は次のとおりです。HelloPython
おはようございます
さようなら
現在の行にあるデータは次のとおりです。さようなら
バイナリデータは次のとおりです:b ' xff xfe x00 x00G x00 x00 x00o x00 x00 x00o x00 x00 x00d x00 x00 x00 x00 x00 x00B x00 x00 x00y x00 x00 x00e x00 x00 x00 ′
通常のデータは次のとおりです。さようなら
出力:
概要
以下にリストされているのは、上記のチュートリアルから要約できるいくつかのポインタです。
- データは本質的に不揮発性であるため、通常、データをセカンダリストレージに永続的に保存するためにファイルを使用します。これにより、データは将来使用される可能性があります。
- 一部のアプリケーションでは、テキストファイルまたはバイナリファイルからデータを読み取りたい場合があります。そのため、open、read、writeメソッドなどのPythonの組み込み関数を使用してデータを読み取ることができます。
- ファイルに書き込むデータはすべて上書きされ、古いデータが失われるため、writeメソッドを使用するときは十分に注意する必要があります。
- データの上書きを防ぐために、ファイルを書き込みおよび追加モードで開いて、データがファイルの最後に追加されるようにすることをお勧めします。
- バイナリモードでファイルを開くと、エンコーディングパラメータを受け入れないことに注意してください。
- 「os」モジュール/パッケージのrenameメソッドとremoveメソッドを使用して、ファイルの名前変更と削除を実行できます。
Pythonファイル処理に関するこの有益なチュートリアルを楽しんでいただけたでしょうか。今後のチュートリアルでは、Pythonのメイン関数について詳しく説明します。