目次
10. ファイルと例外
10.1 ファイルからのデータの読み取り
10.1.1 ファイル全体を読み取る
open() 関数を使用してファイルを開きます
10.1.2ファイルパス
10.1.3 ファイルデータを一行ずつ読み取る
10.2ファイルに書き込む
10.2.1 空のファイルの書き込み
変数を保存するにはシェルブモジュールを使用します
10.2.2 複数行を書く
10.3 OSの動作
10.3.1 os.makedirs()を使用して新しいフォルダーを作成します
10.3.2 os.pathモ​​ジュール
1. ファイルサイズとフォルダーの内容を表示します
2. パスの有効性を確認します
10.4 ファイルを整理する
10.4.1 shutil モジュール
10.4.1.1 ファイルとフォルダーをコピーする
10.4.1.2 ファイルとフォルダーの移動と名前変更
10.5例外
1.ZeroDivisionError 例外
2.TypeError 例外
3. エラーを記録する
4. エラーをスローする
10.6 データを保存する
10.6.2 ユーザー生成データの保存と読み取り
10.6.3 リファクタリング
10.6.4 概要
10.7 デバッグ
1.主張

Python基礎学習まとめ(8)

Jul 14, 2017 pm 06:13 PM
python ベース 要約する

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

See all articles