> ⑰PythonファイルI / O – ネットワークエンジニアチュートリアル

⑰PythonファイルI / O

PythonファイルI / O

この章では、Pythonで利用できるすべての基本入出力機能について説明します。より多くの関数については、Python標準のドキュメントを参照してください。


Print

出力を生成する最も簡単な方法は、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([プロンプト])関数は、標準入力から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

入力機能

入力は、([プロンプト])関数は、入力が有効な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は、デフォルトでファイルを操作するのに必要な基本的な関数とメソッドを提供します。ファイル操作を行うには、ファイルオブジェクトを使用します

オープン機能

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

構文

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

パラメータの詳細は次のとおりです。

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

ここでは、ファイルを開くさまざまなモードのリストを示します。

モード 説明
r 読み取り専用のファイルを開きます。ファイルポインタは、ファイルの先頭に置かれます。これがデフォルトモードです。
rb バイナリ形式でのみ読み込み用のファイルを開きます。ファイルポインタは、ファイルの先頭に置かれます。これがデフォルトモードです。
r + 読み書き用のファイルを開きます。ファイルポインタは、ファイルの先頭に置かれます。
rb + バイナリ形式の読み書き用のファイルを開きます。ファイルポインタは、ファイルの先頭に置かれます。
w 書き込み専用のファイルを開きます。ファイルが存在する場合は、ファイルを上書きします。ファイルが存在しない場合は、新しいファイルを作成して書き込みます。
wb バイナリ形式でのみ書き込むためのファイルを開きます。ファイルが存在する場合は、ファイルを上書きします。ファイルが存在しない場合は、新しいファイルを作成して書き込みます。
w + 書き込みと読み取りの両方のファイルを開きます。ファイルが存在する場合は、既存のファイルを上書きします。ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。
wb + バイナリ形式の書き込みと読み取りの両方のファイルを開きます。ファイルが存在する場合は、既存のファイルを上書きします。ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。
a 追加するファイルを開きます。ファイルが存在する場合、ファイルポインタはファイルの最後にあります。つまり、ファイルは追加モードにあります。ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。
ab バイナリ形式で追加するためのファイルを開きます。ファイルが存在する場合、ファイルポインタはファイルの最後にあります。つまり、ファイルは追加モードにあります。ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。
a + 追加と読み取りの両方のためにファイルを開きます。ファイルが存在する場合、ファイルポインタはファイルの最後にあります。ファイルが追加モードで開きます。ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。
ab + バイナリ形式での追加と読み取りの両方のファイルを開きます。ファイルが存在する場合、ファイルポインタはファイルの最後にあります。ファイルが追加モードで開きます。ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。

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

ファイルが開かれ、1つのファイルオブジェクトがあると、そのファイルに関連するさまざまな情報を取得できます。

ファイルオブジェクトに関連するすべての属性のリストを次に示します。

属性 説明
file.closed ファイルが閉じている場合はtrue、そうでない場合はfalseを返します。
file.mode ファイルがオープンされたアクセスモードを返します。
file.name ファイルの名前を返します。
file.softspace printで明示的にスペースが必要な場合は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()メソッドは、未書き込み情報をフラッシュし、ファイルオブジェクトを閉じます。その後、書き込みは実行できません。

ファイルの参照オブジェクトが別のファイルに再割り当てされると、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

ファイルの読み書き

ファイルオブジェクトは、私たちの生活を容易にするために、アクセス・メソッドのセットを提供します。read()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!!

読み取り()メソッド

読み取り()メソッドは、開いているファイルから文字列を読み込みます。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()メソッドを使用すると、ファイル内の現在位置を伝えます。言い換えれば、次の読み取りまたは書き込みは、ファイルの先頭からその数バイトで発生します。

シーク(【から】オフセット)メソッドは、現在のファイル位置を変更します。オフセット引数は、移動すべきバイト数を示します。以下からの引数は、バイトが移動される場所からの基準位置を特定します。

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()メソッド

名前の変更()メソッドは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()の引数として削除するファイルの名前を供給することにより、ファイルを削除する方法を。

構文

os.remove(file_name)

次に、既存のファイルを削除する例を示します。test2.txt –

#!/usr/bin/python
import os

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

Pythonのディレクトリ

すべてのファイルはさまざまなディレクトリに含まれています。OSのモジュールを使用すると、作成、削除、およびディレクトリを変更役立ついくつかの方法があります。

MKDIR()メソッド

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

構文

os.mkdir("newdir")

次に、カレントディレクトリにディレクトリテストを作成する例を示します。

#!/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"  )



前のページ⑯Pythonモジュール

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:2017-09-22 更新日:

執筆者: