-
PythonでOSError例外をキャッチする方法は?
OSErrorは、osモジュールのエラークラスとして機能し、os固有の関数からエラーが戻ったときに発生します。 与えられたコードを次のように書き直して、例外を処理し、そのタイプを知ることができます。 #foobar.py import os import sys try: for i in range(5): print i, os.ttyname(i) except Exception as e: print e print sys.exc_type このスクリプトをLinuxターミナルで実行すると $ python foobar.py 次の出力が得られます 出力 0 /dev/pt
-
スレッドでPython例外を処理する方法は?
指定されたコードは、例外をキャッチするように書き直されます import sys import threading import time import Queue def thread(args1, stop_event, queue_obj): print "start thread" stop_event.wait(12) if not stop_event.is_set(): try: raise Exception("boom!") except Exception: queue_obj.put(sys.exc_info()) pass try
-
新しいタイプでPython例外を再スローする方法は?
Python 3.xでは、コードは例外チェーンの対象となり、次のように出力が得られます C:/Users/TutorialsPoint1/~.py Traceback (most recent call last): File "C:/Users/TutorialsPoint1/~.py", line 2, in <module> 1/0 ZeroDivisionError: division by zero 上記の例外は、次の例外の直接の原因でした: Traceback (most recent call last): File "C:/Users
-
Pythonでargparseを使用して無効な引数を処理する方法は?
与えられたコードを次のように書き直します #foo.py import argparse class InvalidArgError(Exception):pass parser = argparse.ArgumentParser() parser.add_argument("echo") args = parser.parse_args() try: print (args.echo) raise InvalidArgError except InvalidArgError as e: print e このスクリプトをターミナルで次のように実行すると $ python
-
すべてのPython例外をキャッチするtry/exceptブロックを作成するにはどうすればよいですか?
以下のようなコードを使用してすべての例外をキャッチすることはできますが、次のことを行うべきではないというのが一般的な経験則です。 try: #do_something() except: print "Exception Caught!" ただし、これは、関心のないKeyboardInterruptなどの例外もキャッチします。例外をすぐに再発生させない限り、例外をキャッチすることはできません: try: f = open('file.txt')
-
Pythonの1つの例外ブロックで例外を発生させ、後の例外ブロックでそれをキャッチするにはどうすればよいですか?
tryブロック内の単一のexcept句のみが呼び出されます。例外をより高い位置でキャッチしたい場合は、ネストされたtryブロックを使用する必要があります。 2つの試行を書いてみましょう...このようなブロックを除いて: try: try: 1/0 except ArithmeticError as e: if str(e) == "Zero division": print ("thumbs up") else: raise except Exception as err: print ("thumbs down") raise e
-
Pythonの呼び出し元スレッドでスレッドの例外をキャッチするにはどうすればよいですか?
問題は、thread_obj.start()がすぐに戻ることです。開始した子スレッドは、独自のコンテキスト、独自のスタックで実行されます。そこで発生する例外は、子スレッドのコンテキストにあります。メッセージを渡して、この情報を親スレッドに伝達する必要があります。 コードは次のように書き直すことができます: import sys import threading import Queue class ExcThread(threading.Thread): def __init__(self, foo): threading.Thread.__init__(self) self.foo = f
-
Pythonの'with'ステートメントを使用しているときに例外をキャッチするにはどうすればよいですか?
次のように、例外をキャッチするようにコードを書き直すことができます。 try: with open("myFile.txt") as f: print(f.readlines()) except: print('No such file or directory') 次の出力が得られます C:/Users/TutorialsPoint1/~.py No such file or directory
-
Pythonの例外を処理するためのよりクリーンな方法を提案しますか?
finally句を使用して、例外がスローされたかどうかをクリーンアップできます。 try: #some code here except: handle_exception() finally: do_cleanup() 例外が発生した場合にクリーンアップを実行する場合は、次のようにコーディングできます。 should_cleanup = True try: #some code here should_cleanup = False except: handle_exception() finally: &
-
エラーコードとエラーメッセージを含むカスタムPython例外を作成するにはどうすればよいですか?
次のように、エラーコードとエラーメッセージを含むカスタム例外クラスを記述できます。 class ErrorCode(Exception): def __init__(self, code): self.code = code try: raise ErrorCode(401) except ErrorCode as e: print "Received error with code:", e.code 出
-
Python Exceptionsはランタイムエラーですか?
すべてのPython例外は実行時エラーではなく、構文エラーもあります。 指定されたコードを実行すると、次の出力が得られます。 File "C:/Users/TutorialsPoint1/~.py", line 4 else: ^ SyntaxError: invalid syntax これは構文エラーであり、実行時エラーではないことがわかります。 プログラムのエラーや不正確さは、バグと呼ばれることがよくあります。エラーを見つけて削除するプロセスは、デバッグと呼ばれます。エラーは、次の3つの主要なグループに分類できます。 構文エラー2.ランタイムエラーおよび3.論理エ
-
ifステートメント内でPython例外を処理する方法は?
例外をキャッチするために、コードは次のように記述できます a, b=5, 0 try: if b != 0: print a/b else: a/b raise ZeroDivisionError except Exception as e: print e 次の出力が得られます C:/Users/TutorialsPoint1
-
Pythonで文字列または文字列のサブ文字列がサフィックスで終わっているかどうかを確認するにはどうすればよいですか?
Pythonには、Stringクラスにendswith(string)メソッドがあります。このメソッドは、検索するサフィックス文字列を受け入れ、文字列オブジェクトで呼び出されます。このメソッドは次の方法で呼び出すことができます: string = 'C:/Users/TutorialsPoint1/~.py' print(string.endswith('.py')) 出力 True 文字列が特定のサフィックスで終わっているかどうかを確認する別の方法があります。これを行うには、reモジュール(正規表現)からre.search(suffix +$、string
-
Pythonのサフィックスのリストから文字列が1つで終わっているかどうかを確認するにはどうすればよいですか?
Pythonには、Stringクラスにendswith(tuple)メソッドがあります。このメソッドは、検索する文字列のタプルを受け入れ、文字列オブジェクトで呼び出されます。このメソッドは次の方法で呼び出すことができます: string = 'core java' print(string.endswith(('txt', 'xml', 'java', 'orld'))) 出力 True 文字列が指定されたサフィックスのリストで終わっているかどうかを確認する別の方法があります。これを行うには、reモジュール(正
-
カスタムメッセージを使用してカスタムPython例外を実装するにはどうすればよいですか?
上記のコードの解決策は次のとおりです 例 class CustomValueError(ValueError): def __init__(self, arg): self.arg = arg try: a = int(input("Enter a number:")) if not 1 < a < 10: raise CustomValueError("Value must be within 1 and 10.") except CustomValueError as e: print("CustomValueError Exc
-
Python関数で参照によって引数を渡す方法は?
与えられたコードについて、次の出力 b = ['10', '20'] a = ['10', '20'] 説明: これは、関数がメインスクリプトでその値を変更するため、変数「a」が参照によって渡されたことを示しています。
-
Pythonで文字列にアルファベットまたは数字が含まれているかどうかを確認するにはどうすればよいですか?
Python Stringクラスには、文字列に対して呼び出すことができるisalnum()というメソッドがあり、文字列が英数字のみで構成されているかどうかを通知します。次の方法で呼び出すことができます: print( '123abc'.isalnum()) 出力 True print('123#$%abc'.isalnum()) 出力 False 同じ結果に正規表現を使用することもできます。アルファ数値を照合するには、正規表現 ^ [a-zA-Z0-9] + $を使用してre.match(regex、string)を呼び出すことができます。たとえば、 im
-
Pythonで文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するにはどうすればよいですか?
Pythonでこれを確認する最も簡単な方法は、正規表現を使用することです。指定された文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するために、re.match(regex、string)を使用します。 例 import re print(bool(re.match('^(?=.*[0-9]$)(?=.*[a-zA-Z])', 'hasAlphanum123'))) print(bool(re.match('^(?=.*[0-9])(?=.*[a-zA-Z]$)', 'some string'))) 出力 True F
-
Pythonで文字列に文字、数字、アンダースコア、ダッシュのみが含まれていることを確認するにはどうすればよいですか?
正規表現を使用して、このタスクを実行できます。文字列に文字、数字、アンダースコア、ダッシュのみが含まれていることを確認するために、次の正規表現を使用できます: ^ [A-Za-z0-9 _-]*$。 例 import re print(bool(re.match("^[A-Za-z0-9_-]*$", 'aValidString123--__'))) print(bool(re.match("^[A-Za-z0-9_-]*$", 'inv@lid'))) 出力 True False セットを使用してこの結果を取得すること
-
Pythonで文字列が英数字かどうかを確認するにはどうすればよいですか?
Python Stringクラスには、文字列に対して呼び出すことができるisalnum()というメソッドがあり、文字列が英数字のみで構成されているかどうかを通知します。次の方法で呼び出すことができます: >>> '123abc'.isalnum() True >>> '123#$%abc'.isalnum() False 同じ結果に正規表現を使用することもできます。アルファ数値を照合するには、正規表現 ^ [a-zA-Z0-9] + $を使用してre.match(regex、string)を呼び出すことができます。たとえば、