Python-files-io
Python-ファイルI/O
この章では、Pythonで利用可能なすべての基本的なI/O関数について説明します。 その他の機能については、標準のPythonドキュメントを参照してください。
画面への印刷
出力を生成する最も簡単な方法は、_print_ステートメントを使用することです。このステートメントでは、0個以上の式をコンマで区切って渡すことができます。 この関数は、文字列に渡す式を変換し、次のように結果を標準出力に書き込みます-
#!/usr/bin/python
print "Python is really a great language,", "isn't it?"
これにより、標準画面に次の結果が生成されます-
Python is really a great language, isn't it?
キーボード入力の読み取り
Pythonは、標準入力からテキストの行を読み取るための2つの組み込み関数を提供します。デフォルトでは、キーボードから入力されます。 これらの機能は-
- raw_input
- 入力
_raw_input_関数
_raw_input([prompt])_関数は、標準入力から1行を読み取り、それを文字列として返します(末尾の改行を削除します)。
#!/usr/bin/python
str = raw_input("Enter your input: ")
print "Received input is : ", str
これにより、文字列を入力するように求められ、画面に同じ文字列が表示されます。 「Hello Python!」と入力すると、その出力は次のようになります-
Enter your input: Hello Python
Received input is : Hello Python
_input_関数
_input([prompt])_関数は、入力が有効なPython式であると想定し、評価結果を返すことを除いて、raw_inputと同等です。
#!/usr/bin/python
str = input("Enter your input: ")
print "Received input is : ", str
これは、入力された入力に対して次の結果を生成します-
Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is : [10, 20, 30, 40]
ファイルの開閉
これまで、標準入出力の読み取りと書き込みを行ってきました。 次に、実際のデータファイルの使用方法について説明します。
Pythonは、デフォルトでファイルを操作するために必要な基本的な関数とメソッドを提供します。 file オブジェクトを使用して、ほとんどのファイル操作を行うことができます。
_open_関数
ファイルを読み書きする前に、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. | Modes & Description |
---|---|
1 |
r 読み取り専用でファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。 これがデフォルトのモードです。 |
2 |
rb バイナリ形式でのみ読み取り用にファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。 これがデフォルトのモードです。 |
3 |
r+ 読み取りと書き込みの両方のためにファイルを開きます。 ファイルの先頭に配置されたファイルポインター。 |
4 |
rb+ 読み取りと書き込みの両方のファイルをバイナリ形式で開きます。 ファイルの先頭に配置されたファイルポインター。 |
5 |
w 書き込み専用にファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。 |
6 |
wb バイナリ形式でのみ書き込み用にファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。 |
7 |
w+ 書き込みと読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、既存のファイルを上書きします。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルを作成します。 |
8 |
wb+ 書き込みと読み取りの両方のファイルをバイナリ形式で開きます。 ファイルが存在する場合、既存のファイルを上書きします。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルを作成します。 |
9 |
a 追加するファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 つまり、ファイルは追加モードになっています。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。 |
10 |
ab バイナリ形式で追加するためのファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 つまり、ファイルは追加モードになっています。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。 |
11 |
a+ 追加と読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 ファイルが追加モードで開きます。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルが作成されます。 |
12 |
ab+ バイナリ形式で追加と読み取りの両方のためにファイルを開きます。 ファイルが存在する場合、ファイルポインタはファイルの末尾にあります。 ファイルが追加モードで開きます。 ファイルが存在しない場合、読み取りおよび書き込み用の新しいファイルが作成されます。 |
_file_オブジェクトの属性
ファイルを開いて_file_オブジェクトを1つ作成すると、そのファイルに関連するさまざまな情報を取得できます。
これは、ファイルオブジェクトに関連するすべての属性のリストです-
Sr.No. | Attribute & Description |
---|---|
1 |
file.closed ファイルが閉じている場合はtrue、そうでない場合はfalseを返します。 |
2 |
file.mode ファイルを開いたときのアクセスモードを返します。 |
3 |
file.name ファイルの名前を返します。 |
4 |
file.softspace 印刷でスペースが明示的に必要な場合はfalseを返し、そうでない場合はtrueを返します。 |
例
#!/usr/bin/python
# 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
print "Softspace flag : ", fo.softspace
これは、次の結果を生成します-
Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0
_close()_メソッド
_file_オブジェクトのclose()メソッドは、書き込まれていない情報をフラッシュし、ファイルオブジェクトを閉じます。その後、書き込みはできなくなります。
Pythonは、ファイルの参照オブジェクトが別のファイルに再割り当てされると、ファイルを自動的に閉じます。 close()メソッドを使用してファイルを閉じることをお勧めします。
構文
fileObject.close()
例
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
# Close opend file
fo.close()
これは、次の結果を生成します-
Name of the file: foo.txt
ファイルの読み書き
_file_オブジェクトは、生活を楽にするアクセス方法のセットを提供します。 _read()_メソッドと_write()_メソッドを使用してファイルを読み書きする方法がわかります。
_write()_メソッド
_write()_メソッドは、開いているファイルに任意の文字列を書き込みます。 Python文字列には、テキストだけでなくバイナリデータを含めることができることに注意することが重要です。
write()メソッドは、文字列の末尾に改行文字( '\ n')を追加しません-
構文
fileObject.write(string)
ここで、渡されるパラメーターは、開かれたファイルに書き込まれるコンテンツです。
例
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "wb")
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/python
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()
これは、次の結果を生成します-
Read String is : Python is
ファイルの位置
_tell()_メソッドは、ファイル内の現在の位置を示します。つまり、次の読み取りまたは書き込みは、ファイルの先頭からそのバイト数で発生します。
_seek(offset [、from])_メソッドは、現在のファイルの位置を変更します。 _offset_引数は、移動するバイト数を示します。 _from_引数は、バイトの移動元の参照位置を指定します。
_from_が0に設定されている場合、ファイルの先頭を参照位置として使用し、1は現在位置を参照位置として使用することを意味します。2に設定されている場合、ファイルの末尾が参照位置として使用されます。
例
上記で作成したファイル_foo.txt_を使用してみましょう。
#!/usr/bin/python
# 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 opend 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/python
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/python
import os
# Delete file test2.txt
os.remove("text2.txt")
Pythonのディレクトリ
すべてのファイルはさまざまなディレクトリに含まれており、Pythonでもこれらの処理に問題はありません。 os モジュールには、ディレクトリの作成、削除、変更に役立ついくつかのメソッドがあります。
_mkdir()_メソッド
*os* モジュールの_mkdir()_メソッドを使用して、現在のディレクトリにディレクトリを作成できます。 作成するディレクトリの名前を含む引数をこのメソッドに提供する必要があります。
構文
os.mkdir("newdir")
例
以下は、現在のディレクトリに_test_ディレクトリを作成する例です-
#!/usr/bin/python
import os
# Create a directory "test"
os.mkdir("test")
_chdir()_メソッド
_chdir()_メソッドを使用して、現在のディレクトリを変更できます。 chdir()メソッドは引数を取ります。これは、現在のディレクトリにしたいディレクトリの名前です。
構文
os.chdir("newdir")
例
以下は、「/home/newdir」ディレクトリに移動する例です-
#!/usr/bin/python
import os
# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
_getcwd()_メソッド
_getcwd()_メソッドは、現在の作業ディレクトリを表示します。
構文
os.getcwd()
例
以下は、現在のディレクトリを与えるための例です-
#!/usr/bin/python
import os
# This would give location of the current directory
os.getcwd()
_rmdir()_メソッド
_rmdir()_メソッドはディレクトリを削除します。ディレクトリはメソッドの引数として渡されます。
ディレクトリを削除する前に、その中のすべてのコンテンツを削除する必要があります。
構文
os.rmdir('dirname')
例
以下は、「/tmp/test」ディレクトリを削除する例です。 ディレクトリの完全修飾名を指定する必要があります。指定しない場合、現在のディレクトリでそのディレクトリを検索します。
#!/usr/bin/python
import os
# This would remove "/tmp/test" directory.
os.rmdir( "/tmp/test" )
ファイルおよびディレクトリ関連のメソッド
3つの重要なソースがあり、WindowsおよびUnixオペレーティングシステムでファイルとディレクトリを処理および操作するための幅広いユーティリティメソッドを提供しています。 彼らは次のとおりです-
- link:/python/file_methods [File Object Methods]:_file_オブジェクトは、ファイルを操作する関数を提供します。
- link:/python/os_file_methods [OSオブジェクトメソッド]:ファイルとディレクトリを処理するメソッドを提供します。