Python3-python-files-io

提供:Dev Guides
移動先:案内検索

Python 3-ファイルI/O

この章では、Python 3で利用可能なすべての基本的なI/O関数について説明します。 その他の機能については、標準のPythonドキュメントを参照してください。

画面への印刷

出力を生成する最も簡単な方法は、_print_ステートメントを使用することです。このステートメントでは、0個以上の式をコンマで区切って渡すことができます。 この関数は、文字列に渡す式を変換し、次のように結果を標準出力に書き込みます-

#!/usr/bin/python3

print ("Python is really a great language,", "isn't it?")

これにより、標準画面に次の結果が生成されます-

Python is really a great language, isn't it?

キーボード入力の読み取り

Python 2には、標準入力からデータを読み取るための2つの組み込み関数があり、デフォルトではキーボードから取得されます。 これらの関数は* input()および raw_input()*です

Python 3では、raw_input()関数は非推奨です。 さらに、input()関数は、引用符( または "")で囲まれているかどうかに関係なく、キーボードからデータを文字列として読み取ります。

入力関数

  • input([prompt])*関数は、入力が有効なPython式であると想定し、評価結果を返すことを除き、raw_inputと同等です。
#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x
"'10'"

ファイルの開閉

これまで、標準入出力の読み取りと書き込みを行ってきました。 次に、実際のデータファイルの使用方法について説明します。

Pythonは、デフォルトでファイルを操作するために必要な基本的な関数とメソッドを提供します。 file オブジェクトを使用して、ほとんどのファイル操作を行うことができます。

オープン関数

ファイルを読み書きする前に、Pythonの組み込みopen()関数を使用してファイルを開く必要があります。 この関数は、関連する他のサポートメソッドを呼び出すために利用される file オブジェクトを作成します。

構文

file object = open(file_name [, access_mode][, buffering])

ここにパラメータの詳細があります-

  • file_name -file_name引数は、アクセスするファイルの名前を含む文字列値です。
  • access_mode -access_modeは、ファイルを開く必要があるモード、つまり読み取り、書き込み、追加などを決定します。 可能な値の完全なリストを以下の表に示します。 これはオプションのパラメーターであり、デフォルトのファイルアクセスモードは読み取り(r)です。
  • バッファリング-バッファリング値が0に設定されている場合、バッファリングは行われません。 バッファリング値が1の場合、ファイルへのアクセス中に行バッファリングが実行されます。 バッファリング値を1より大きい整数として指定すると、指定されたバッファサイズでバッファリングアクションが実行されます。 負の場合、バッファサイズはシステムのデフォルトです(デフォルトの動作)。

ここにファイルを開くさまざまなモードのリストがあります-

Sr.No. Mode & Description
1

r

読み取り専用でファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。 これがデフォルトのモードです。

2

rb

バイナリ形式でのみ読み取り用にファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。 これがデフォルトのモードです。

3

rPLUS

読み取りと書き込みの両方のためにファイルを開きます。 ファイルの先頭に配置されたファイルポインター。

4

rbPLUS

読み取りと書き込みの両方のファイルをバイナリ形式で開きます。 ファイルの先頭に配置されたファイルポインター。

5

w

書き込み専用にファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

6

wb

バイナリ形式でのみ書き込み用にファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

7

wPLUS

書き込みと読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、既存のファイルを上書きします。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルを作成します。

8

wbPLUS

書き込みと読み取りの両方のファイルをバイナリ形式で開きます。 ファイルが存在する場合、既存のファイルを上書きします。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルを作成します。

9

a

追加するファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 つまり、ファイルは追加モードになっています。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

10

ab

バイナリ形式で追加するためのファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 つまり、ファイルは追加モードになっています。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

11

aPLUS

追加と読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 ファイルが追加モードで開きます。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルが作成されます。

12

abPLUS

バイナリ形式で追加と読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 ファイルが追加モードで開きます。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルが作成されます。

ファイルのオブジェクト属性

ファイルを開いて_file_オブジェクトを1つ作成すると、そのファイルに関連するさまざまな情報を取得できます。

これは、ファイルオブジェクトに関連するすべての属性のリストです-

Sr.No. Attribute & Description
1

file.closed

ファイルが閉じている場合はtrue、そうでない場合はfalseを返します。

2

file.mode

ファイルを開いたときのアクセスモードを返します。

3

file.name

ファイルの名前を返します。

注意-ソフトスペース属性はPython 3.xではサポートされていません

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()

これは、次の結果を生成します-

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb

close()メソッド

ファイルオブジェクトのclose()メソッドは、書き込まれていない情報をフラッシュし、ファイルオブジェクトを閉じます。その後、書き込みはできなくなります。

Pythonは、ファイルの参照オブジェクトが別のファイルに再割り当てされると、ファイルを自動的に閉じます。 close()メソッドを使用してファイルを閉じることをお勧めします。

構文

fileObject.close();

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)

# Close opened file
fo.close()

これは、次の結果を生成します-

Name of the file:  foo.txt

ファイルの読み書き

ファイルオブジェクトは、私たちの生活を楽にする一連のアクセス方法を提供します。 * read()および write()*メソッドを使用してファイルを読み書きする方法がわかります。

write()メソッド

  • write()*メソッドは、任意の文字列を開いているファイルに書き込みます。 Python文字列には、テキストだけでなくバイナリデータを含めることができることに注意することが重要です。

write()メソッドは、文字列の末尾に改行文字( '\ n')を追加しません-

構文

fileObject.write(string);

ここで、渡されるパラメーターは、開かれたファイルに書き込まれるコンテンツです。

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

上記のメソッドはfoo.txtファイルを作成し、指定されたコンテンツをそのファイルに書き込み、最後にそのファイルを閉じます。 このファイルを開く場合、次の内容があります-

Python is a great language.
Yeah its great!!

read()メソッド

  • read()*メソッドは、開いているファイルから文字列を読み取ります。 Python文字列にはバイナリデータを含めることができることに注意することが重要です。 テキストデータは別として。

構文

fileObject.read([count]);

ここで、渡されたパラメーターは、開かれたファイルから読み取られるバイト数です。 このメソッドは、ファイルの先頭から読み取りを開始し、_count_が欠落している場合、可能な限り、おそらくファイルの終わりまで読み取りを試みます。

上記で作成したファイル_foo.txt_を使用してみましょう。

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Close opened file
fo.close()

これは、次の結果を生成します-

Read String is :  Python is

ファイルの位置

_tell()_メソッドは、ファイル内の現在の位置を示します。つまり、次の読み取りまたは書き込みは、ファイルの先頭からそのバイト数で発生します。

_seek(offset [、from])_メソッドは、現在のファイルの位置を変更します。 offset 引数は、移動するバイト数を示します。 from 引数は、バイトの移動元の参照位置を指定します。

_from_が0に設定されている場合、ファイルの先頭が参照位置として使用されます。 1に設定されている場合、現在の位置が基準位置として使用されます。 2に設定されている場合、ファイルの末尾が参照位置として使用されます。

上記で作成したファイル_foo.txt_を使用してみましょう。

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Check current position
position = fo.tell()
print ("Current file position : ", position)

# Reposition pointer at the beginning once again
position = fo.seek(0, 0)
str = fo.read(10)
print ("Again read String is : ", str)

# Close opened file
fo.close()

これは、次の結果を生成します-

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

ファイルの名前変更と削除

Python os モジュールは、ファイルの名前変更や削除などのファイル処理操作の実行に役立つメソッドを提供します。

このモジュールを使用するには、最初にインポートする必要があります。その後、関連する関数を呼び出すことができます。

rename()メソッド

  • rename()*メソッドは、現在のファイル名と新しいファイル名の2つの引数を取ります。

構文

os.rename(current_file_name, new_file_name)

以下は、既存のファイル_test1.txt_の名前を変更する例です-

#!/usr/bin/python3
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

remove()メソッド

  • remove()*メソッドを使用して、削除するファイルの名前を引数として指定することにより、ファイルを削除できます。

構文

os.remove(file_name)

以下は、既存のファイル_test2.txt_を削除する例です-

#!/usr/bin/python3
import os

# Delete file test2.txt
os.remove("text2.txt")

Pythonのディレクトリ

すべてのファイルはさまざまなディレクトリに含まれており、Pythonでもこれらの処理に問題はありません。 os モジュールには、ディレクトリの作成、削除、変更に役立ついくつかのメソッドがあります。

mkdir()メソッド

*os* モジュールの* mkdir()*メソッドを使用して、現在のディレクトリにディレクトリを作成できます。 作成するディレクトリの名前を含むこのメソッドに引数を指定する必要があります。

構文

os.mkdir("newdir")

以下は、現在のディレクトリにディレクトリ_test_を作成する例です-

#!/usr/bin/python3
import os

# Create a directory "test"
os.mkdir("test")

chdir()メソッド

_chdir()_メソッドを使用して、現在のディレクトリを変更できます。 chdir()メソッドは引数を取ります。これは、現在のディレクトリにしたいディレクトリの名前です。

構文

os.chdir("newdir")

以下は、「/home/newdir」ディレクトリに移動する例です-

#!/usr/bin/python3
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

getcwd()メソッド

  • getcwd()*メソッドは、現在の作業ディレクトリを表示します。

構文

os.getcwd()

以下は、現在のディレクトリを与えるための例です-

#!/usr/bin/python3
import os

# This would give location of the current directory
os.getcwd()

rmdir()メソッド

  • rmdir()*メソッドは、メソッド内の引数として渡されるディレクトリを削除します。

ディレクトリを削除する前に、その中のすべてのコンテンツを削除する必要があります。

構文

os.rmdir('dirname')

以下は、「/tmp/test」ディレクトリを削除する例です。 ディレクトリの完全修飾名を指定する必要があります。指定しない場合、現在のディレクトリでそのディレクトリを検索します。

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

ファイルおよびディレクトリ関連のメソッド

3つの重要なソースがあり、WindowsおよびUnixオペレーティングシステムでファイルとディレクトリを処理および操作するための幅広いユーティリティメソッドを提供しています。 彼らは次のとおりです-

 *リンク:/python3/file_methods [ファイルオブジェクトメソッド]
+* file *オブジェクトは、ファイルを操作する関数を提供します。
* リンク:/python3/os_file_methods [OSオブジェクトメソッド]
+これは、ファイルとディレクトリを処理するメソッドを提供します。