Python基礎学習まとめ(8)

PHP中文网
PHP中文网オリジナル
2017-07-14 18:13:141531ブラウズ

10. ファイルと例外

ファイルの処理方法を学び、プログラムに大量のデータを迅速に分析させ、エラーの処理方法を学び、事故に直面した場合のプログラムのクラッシュを回避します。例外について学びます。例外は Python によって作成される特別なオブジェクトで、プログラムの実行中に発生するエラーを管理し、プログラムの適用性、使いやすさ、安定性を向上させるために使用されます。

学習モジュールjson、jsonは、プログラムが予期せず実行を停止した場合の損失を避けるためにユーザーデータを保存するために使用できます。

ファイルの処理とデータの保存を学ぶと、ユーザーは入力するデータの種類と入力を選択することができ、プログラムを使用して何かを処理した後にプログラムを閉じて、次回もその処理を続けることができます。 。

例外を処理する方法を学び、ファイルが存在しない状況に対処し、プログラムをクラッシュさせる可能性のあるさまざまな問題に対処し、これらの誤ったデータが意図的でないエラーまたは損傷によるものであるかどうかにかかわらず、さまざまなエラーに直面した場合にプログラムをより堅牢にします。プログラムの悪意。

10.1 ファイルからのデータの読み取り

ファイルを読み取るには、ファイル全体を一度に読み取ることも、ファイルを 1 行ずつ読み取ることもできます。ファイルのサイズに応じて独自の読み取り方法を選択してください。

10.1.1 ファイル全体を読み取る

Python では、ファイルの読み取りと書き込みには 3 つの手順があります:

1. open() 関数を呼び出して、File オブジェクトを返します。

2. File オブジェクトの read() メソッドまたは write() メソッドを呼び出します。

3. File オブジェクトの close() メソッドを呼び出して、ファイルを閉じます。

open() 関数を使用してファイルを開きます

open(filename) as file_object:

Contents = file_Object.read () #ファイルを自動的に閉じるため、クローズメソッドを呼び出す必要はありません。

ファイルの現在のディレクトリで開くファイルを見つけます。

read()メソッドはファイルの内容を読み取ります

FileオブジェクトのRead()メソッド:

readlines() メソッドを使用して、ファイルから文字列のリストを取得できます。リスト内の各文字列はテキストの各行です。

10.1.2ファイルパス

Windows ではスラッシュ、バックスラッシュ、OS X と Linux ではスラッシュに注意してください。

open('text_filesファイル名.txt')をfile_objectとして使用します。

ファイルパスの指定方法は2通りあります。

  • 「絶対パス」は常にルートフォルダーから始まります。
  • 「相対パス」。プログラムの現在の作業ディレクトリからの相対パスです。

絶対ファイルパス

勝ち:

file_path = 'C:Usersehmatthesother_filestext_filesファイル名.txt'

open(file_path) as file_object:

Linux と OS:

file_path = '/home/ehmatthes/other_files/text_files/filename.txt'

open(file_path) as file_object:

ドット (.) フォルダーとドット (..) フォルダーもあります。これらは実際のフォルダーではなく、パスで使用できる特別な名前です。単一のピリオド (「ドット」) をフォルダー名として使用すると、「このディレクトリ」の省略形になります。 2 つのピリオド (「ドット」) は親フォルダーを意味します。

絶対パスと相対パスの処理

1.os.path モジュールは、相対パスの絶対パスを返し、指定されたパスが絶対パスであるかどうかを確認するいくつかの関数を提供します。

2. os.path.abspath(path)を呼び出すと、パラメータの絶対パスの文字列が返されます。これは、相対パスを絶対パスに変換する簡単な方法です。

3. os.path.isabs(path) を呼び出します。パラメータが絶対パスの場合は True を返し、相対パスの場合は False を返します。

4. os.path.relpath(path, start)を呼び出すと、開始パスからパスまでの相対パスの文字列が返されます。

5. start が指定されていない場合は、現在の作業ディレクトリを開始パスとして使用します。

10.1.3 ファイルデータを一行ずつ読み取る

ラインインラインの場合:

replace()置換関数

file.replace(‘犬’, ‘猫’)

10.2ファイルに書き込む

10.2.1 空のファイルの書き込み

open('file', 'w') は、ファイル名と操作という 2 つの実際のパラメータを提供します

1.読み取りモード「r」

2.書き込みモード「w」

3.追加モード「a」

4.読み書きモード「r+」

5. modeパラメータを省略した場合、Pythonはデフォルトで読み取り専用モードでのみファイルを開きます。

6. ファイルが存在しない場合は、開くと自動的にファイルが生成されます。

7. 入力はInput、出力はOutputなので、入力と出力をまとめてInput/Output、略してIOと呼びます。

8. パスワードを入力する際、パスワードを非表示にしたい場合は、getpass モジュールの getpass メソッドを使用する必要があります。

注意、書き込みモード「w」で開いた場合、ファイルがすでに存在する場合、ファイルはクリアされます。

open()に渡されたファイル名が存在しない場合、書き込みモードと追加モードの両方で、新しい空のファイルが作成されます。ファイル の読み取りまたは書き込み後、ファイルを再度開く前に close() メソッド を呼び出します。

Pythonはテキストファイルに文字列を書き込むことしかできません。数値データをテキストファイルに保存するには、関数strを使って文字列形式に変換する必要があります。

>>> helloContent = helloFile.read()

>>> こんにちはコンテンツ

「ハローワールド!」

>>> baconFile = open('bacon.txt', 'w')

>>> baconFile.write('Hello world!n')

13

>>> baconFile.close()

>>> baconFile = open('bacon.txt', 'a')

>>> baconFile.write('ベーコンは野菜ではありません。')

25

>>> baconFile.close()

>>> baconFile = open('bacon.txt')

>>> コンテンツ = baconFile.read()

>>> baconFile.close()

>>> 印刷(コンテンツ)

こんにちは、ベーコンは野菜ではありません

まず、bacon.txtを書き込みモードで開きます。 bacon.txt はまだ存在しないため、Python によって作成されます。開いているファイルに対して write() を呼び出し、文字列パラメータ 'Hello world! n' を write() に渡し、文字列をファイルに書き込み、改行を含む書き込まれた文字数を返します。次に、ファイルを閉じます。

ファイルの既存の内容にテキストを追加するには、先ほど書き込んだ文字列を置き換えるのではなく、ファイルを追加モードで開きます。ファイルに「ベーコンは野菜ではありません」と書き込んで閉じます。最後に、ファイルの内容を画面に出力するには、デフォルトの読み取りモードでファイルを開き、read() を呼び出し、結果の内容を content に保存し、ファイルを閉じて、内容を出力します。

write() メソッドは、print() 関数のように文字列の末尾に改行文字を自動的に追加しないことに注意してください。この文字は自分で追加する必要があります。

変数を保存するにはシェルブモジュールを使用します

shelve モジュールを利用すると、Python プログラムの変数をバイナリのシェルフ ファイルに保存できます。 このようにして、プログラムは変数のデータをハードディスクから回復できます。シェルブ モジュールを使用すると、プログラムに「保存」および「開く」機能を追加できます。たとえば、プログラムを実行して構成設定を入力した場合、それらの設定をシェルフ ファイルに保存し、次回実行時にプログラムにそれらの設定をロードさせることができます。

>>> インポート棚

>shelfFile = shelve.open('mydata')

>>> 猫 = ['ゾフィー'、'プーカ'、'サイモン'】

>>> 棚ファイル['猫'] = 猫

>shelfFile.close()

Windows で前のコードを実行すると、現在の作業ディレクトリに 3 つの新しいファイル (mydata.bak、mydata.dat、mydata.dir) が表示されます。 OS X では、mydata.db ファイルが 1 つだけ作成されます。

これらのバイナリファイルにはシェルフに保存されているデータが含まれています。これらのバイナリの形式は重要ではありません。シェルブ モジュールがどのように実行するかではなく、何を実行するかを知る必要があるだけです。このモジュールを使用すると、プログラムのデータをファイルに保存する心配がなくなります。 プログラムは後でシェルブ モジュールを使用してこれらのファイルを再度開き、データを取得できます。シェルフ値は、一度開くと読み取りまたは書き込みができるため、読み取りまたは書き込みモードで開く必要はありません。

>shelfFile = shelve.open('mydata')

>>> タイプ(シェルフファイル)

<クラス 'shelve.DbfilenameShelf'>

>>> シェルフファイル['猫'] ['ゾフィー'、'プーカ'、'サイモン'】

>shelfFile.close()

辞書と同じように、シェルフの値にはkeys()メソッドとvalues()メソッドがあり、シェルフ内のキーと値のリストのような値を返します。これらのメソッドは真のリストではなくリストのような値を返すため、リスト形式を取得するには list() 関数に渡す必要があります。

>shelfFile = shelve.open('mydata')

>>> リスト(shelfFile.keys())

[「猫」]

>>> リスト(shelfFile.values())

[[「ゾフィー」、「プーカ」、「サイモン」]]

>shelfFile.close()

ファイルを作成するときにメモ帳やテキストエディットなどのテキストエディタで読む必要がある場合、プレーンテキストが便利です。ただし、Python プログラムからデータを保存する場合は、shelve モジュールを使用します。

10.2.2 複数行を書く

関数 write() は、書き込まれたテキストの後の行を自動的に折り返さないため、改行文字 n を自分で追加する必要があります。

10.3 OSの動作

10.3.1 os.makedirs()を使用して新しいフォルダーを作成します

プログラムは os.makedirs() 関数を使用して新しいフォルダー (ディレクトリ) を作成できます。

>>> OSをインポートします

>>> os.makedirs('C:\おいしい\くるみ\ワッフル')

これにより、C:deliciousフォルダーが作成されるだけでなく、C:deliciousの下にwalnutフォルダーが作成され、C:deliciouswalnut内にwafflesフォルダーも作成されます。つまり、os.makedirs() は、完全なパス名が存在することを確認するために、必要なすべての中間フォルダーを作成します。

10.3.2 os.pathモ​​ジュール

os.pathモ​​ジュールには、ファイル名とファイルパスに関連する便利な関数が多数含まれています。

1. ファイルサイズとフォルダーの内容を表示します

  • ファイル パスを処理する方法を確立したら、特定のファイルやフォルダーに関する情報の収集を開始できます。 os.path モジュールは、ファイルのバイト数と、指定されたフォルダー内のファイルとサブフォルダーを表示する関数を提供します。
  • os.path.getsize(path)を呼び出すと、pathパラメータにファイルのバイト数が返されます。
  • os.listdir(path) を呼び出すと、path パラメーター内の各ファイルを含むファイル名文字列のリストが返されます (この関数は os.path ではなく os モジュール内にあることに注意してください)。
  • os.path.join()を使ってフォルダ名と現在のファイル名を結び付けました。

2. パスの有効性を確認します

  • 指定したパスが存在しない場合、多くの Python 関数がクラッシュし、エラーが報告されます。 os.path モジュールは、指定されたパスが存在するかどうか、およびそれがファイルであるかフォルダーであるかを検出する機能を提供します。
  • os.path.exists(path)を呼び出すと、pathパラメータが指すファイルまたはフォルダが存在する場合はTrueが返され、そうでない場合はFalseが返されます。
  • pathパラメータが存在し、それがファイルである場合、os.path.isfile(path)を呼び出すとTrueが返され、それ以外の場合はFalseが返されます。
  • pathパラメータが存在し、それがフォルダの場合、os.path.isdir(path)を呼び出すとTrueが返され、それ以外の場合はFalseが返されます。

10.4 ファイルを整理する

10.4.1 shutil モジュール

shutil(またはシェルツール)モジュールには、Pythonプログラムでファイルのコピー、移動、名前変更、削除を可能にする関数が含まれています。 shutil 関数を使用するには、まず shutil をインポートする必要があります。

10.4.1.1 ファイルとフォルダーをコピーする

shutilモジュールはファイルやフォルダ全体をコピーする機能を提供します。

1. shutil.copy(source, destination) を呼び出して、パスのソースにあるファイルをパスの宛先にあるフォルダーにコピーします (ソースと宛先は両方とも文字列です)。

2. destinationがファイル名の場合、それがコピーされたファイルの新しい名前として使用されます。この関数は、コピーされるファイルのパスを表す文字列を返します。

>>> シュティル、OS をインポートします

>>> os.chdir('C:\')

>>> shutil.copy('C:\spam.txt','C:\delicious')

「C:\delicious\spam.txt」

>>> shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')

「C:\delicious\eggs2.txt」

10.4.1.2 ファイルとフォルダーの移動と名前変更

shutil.move(source, destination)を呼び出して、パス元のフォルダーをパス先に移動し、新しい場所の絶対パスの文字列を返します。

宛先がフォルダーを指している場合、ソースファイルは宛先に移動され、元のファイル名は保持されます。

10.5例外

Pythonは例外と呼ばれる特別なオブジェクトを使用して、プログラムの実行中に発生するエラーを管理します。

Pythonではエラーが発生するたびに例外が作成されます。

例外を処理するように記述されている場合、プログラムは続行されますが、そうでない場合、プログラムは停止し、例外に関するレポートを含むトラックバックを返します。

例外はtry-excelコードブロックを使用して処理されます。指定された操作を実行し、Python に何をすべきかを指示します。 try-excel コード ブロック を使用すると、プログラムでエラーが発生した場合でも、プログラムは実行を継続し、何が問題なのかをユーザーに知らせるために作成したわかりやすいエラー メッセージを表示します。

1.ZeroDivisionError 例外

除数が0の場合に例外が発生します。

2.TypeError 例外

整数型と浮動小数点型のパラメータのみが許可されます。データ型チェックは、組み込み関数 isinstance() を使用して実装できます

def my_abs(x):

isinstance(x, (int, float)) でない場合:

TypeError('不正なオペランドの型') を発生させる

x >= 0 の場合:

x を返す

その他:

return -x

値エラー

3. エラーを記録する

Python の組み込みロギング モジュールを使用すると、エラー情報を簡単に記録できます。

4. エラーをスローする

エラーをスローしたい場合は、まず必要に応じてエラークラスを定義し、継承関係を選択してから、raise ステートメントを使用してエラーインスタンスをスローします。

10.6 データを保存する

データの保存にはjsonモジュールを使用します。 Json データの形式は Python に固有のものではないため、他のプログラミング言語を使用している人々と共有できます。これは便利で習得が簡単な軽量形式です。

JSON (JavaScript Object Notation) 形式は、もともと JavaScript 用に開発されましたが、その後、多くの言語で使用される一般的な形式になりました。

json.dump()とjson.load()を使用します

json.dump() は、保存するデータとデータの保存に使用できるファイル オブジェクトという 2 つの実際のパラメーターを受け取ります。

  1. 一連の数値を保存するプログラム json.dump()
  2. 数値をメモリに読み込むプログラム json.load()

10.6.2 ユーザー生成データの保存と読み取り

json.dumpとjson.loadはそれぞれデータの保存と読み込みに一緒に使用されます。

10.6.3 リファクタリング

1. コードは正しく実行できますが、コードを特定の作業を完了する一連の関数に分割するなど、さらなる改善が可能です。このプロセスは再構築と呼ばれます。リファクタリングにより、コードがより明確になり、理解しやすくなり、拡張が容易になります。

2. ロジックのほとんどを 1 つ以上の関数に入れます。

10.6.4 概要

1. ファイルの読み取り、ファイル全体の読み取りと 1 行の読み取り、ファイルの操作、オープン、読み取りモード、書き込みモード、追加モード、読み取りプラス書き込みモードを学習しました。

2. 例外処理に try-excel-else コード ブロックを使用する方法。例外タイプ。データの操作、データの保存と読み取り、JSON モジュールの使用、ダンプとロードの使用、コードのリファクタリングの方法を学びます。

10.7 デバッグ

1.主張

表示を支援するために print() が使用される場合は常に、代わりにアサーションを使用できます。

def foo(s):

n = int(s)

n != 0、「n はゼロです!」をアサートします

10/n を返す

def main():

ふー('0')

assert は、式 n != 0 が True であるべきであることを意味します。そうでない場合、プログラム動作のロジックに従って、次のコードは間違いなく間違っています。

アサーションが失敗した場合、assert ステートメント自体が AssertionError をスローします。

以上がPython基礎学習まとめ(8)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。