検索

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')

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

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

>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 までご連絡ください。
PythonスクリプトがUNIXで実行されない可能性がある一般的な理由は何ですか?PythonスクリプトがUNIXで実行されない可能性がある一般的な理由は何ですか?Apr 28, 2025 am 12:18 AM

PythonスクリプトがUNIXシステムで実行できない理由には、次のものが含まれます。1)CHMOD XYOUR_SCRIPT.PYを使用して実行権限を付与する不十分な権限。 2)shebangラインが正しくないか欠落している場合、#!/usr/bin/envpythonを使用する必要があります。 3)環境可変設定が誤っていない場合、OS.Environデバッグを印刷できます。 4)間違ったPythonバージョンを使用して、Shebangラインまたはコマンドラインでバージョンを指定できます。 5)仮想環境を使用して依存関係を分離する依存関係の問題。 6)構文エラー、python-mpy_compileyour_script.pyを使用して検出します。

Pythonアレイを使用することがリストを使用するよりも適切なシナリオの例を挙げてください。Pythonアレイを使用することがリストを使用するよりも適切なシナリオの例を挙げてください。Apr 28, 2025 am 12:15 AM

Pythonアレイの使用は、リストよりも大量の数値データの処理に適しています。 1)配列を保存するメモリを保存します。2)アレイは数値的な値で動作するのが高速です。3)アレイフォースタイプの一貫性、4)アレイはCアレイと互換性がありますが、リストほど柔軟で便利ではありません。

Pythonでリストと配列を使用することのパフォーマンスへの影響は何ですか?Pythonでリストと配列を使用することのパフォーマンスへの影響は何ですか?Apr 28, 2025 am 12:10 AM

listSareのより良い前提条件とmixdatatypes、whilearraysares優れたスナリカル計算砂の砂を大きくしたデータセット。

Numpyは、大きな配列のメモリ管理をどのように処理しますか?Numpyは、大きな配列のメモリ管理をどのように処理しますか?Apr 28, 2025 am 12:07 AM

numpymanagesmemoryforlargearrayseffictificleusing biews、copies、andmemory-mappedfiles.1)rewsinging withotingcopying、directmodifying theoriginalArray.2)copiescanbecreatedwithcopy()methodforpreservingdata.3)Memory-MapplehandLemassiutasedatasetasedatasetasetasetasetasetasedas

モジュールのインポートが必要なのはどれですか:リストまたは配列は?モジュールのインポートが必要なのはどれですか:リストまたは配列は?Apr 28, 2025 am 12:06 AM

listsinpythondonotrequireimportingamodule、whilearrays fromthearraymoduledoneedanimport.1)listsarebuiltin、versatile、andcanholdmixeddatypes.2)araysaremoremory-efficient-fornumerumerumerumerumerumerdatabutでき、対象となるンドベフェフサメタイプ。

どのデータ型をPythonアレイに保存できますか?どのデータ型をPythonアレイに保存できますか?Apr 27, 2025 am 12:11 AM

Pythonlistscanstoreanydatatype,arraymodulearraysstoreonetype,andNumPyarraysarefornumericalcomputations.1)Listsareversatilebutlessmemory-efficient.2)Arraymodulearraysarememory-efficientforhomogeneousdata.3)NumPyarraysareoptimizedforperformanceinscient

Pythonアレイに間違ったデータ型の値を保存しようとするとどうなりますか?Pythonアレイに間違ったデータ型の値を保存しようとするとどうなりますか?Apr 27, 2025 am 12:10 AM

heouttemptemptostoreavure ofthewrongdatatypeinapythonarray、yure counteractypeerror.thisduetothearraymodule'sstricttypeeencultionyを使用します

Python Standard Libraryの一部はどれですか:リストまたは配列はどれですか?Python Standard Libraryの一部はどれですか:リストまたは配列はどれですか?Apr 27, 2025 am 12:03 AM

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

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