Notebook

これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。

HTML ファイル生成日時: 2024/11/24 14:07:03.493 (台灣標準時)

Python の try, except, else, finally の使い方

Python の try, except, else, finally の使い方を記録しておくでござる。

例えば、文字列を整数に変換することを考える。文字列が確実に数字であるな らば問題ないのでござるが、文字列がどんな内容なのかわからない場合、スク リプトの実行がそこで止まってしまうことになる場合があり得るでござる。

以下のようなスクリプトを考えるでござる。


#!/usr/pkg/bin/python3.9

#
# Time-stamp: <2022/06/11 10:04:00 (CST) daisuke>
#

# import sys module
import sys

if (len (sys.argv) != 2):
    print ("ERROR: one argument must be given!")
    sys.exit ()

# string to be processed
string = sys.argv[1]

# conversion from string into integer
integer = int (string)

# printing result
print ("result of the conversion: %s ==> %d" % (string, integer) )

上のスクリプトを実行してみると、以下のようになるでござる。数字を与えれ ば、問題はないでござる。


% ./except_00.py 123
result of the conversion: 123 ==> 123

ただし、アルファベットを与えると、以下のようになってしまうでござる。

% ./except_00.py abc
Traceback (most recent call last):
  File "/amd/ogikubo/root/volume1/nas0/daisuke/backup/daisuke/src/python3/except/./except_00.py", line 18, in 
    integer = int (string)
ValueError: invalid literal for int() with base 10: 'abc'

try, except, else, finally を使うと、プログラムがその場で終了してしま うことを防ぐことができるでござる。以下のようなスクリプトを考えるでござ る。


#!/usr/pkg/bin/python3.9

#
# Time-stamp: <2022/06/11 10:15:41 (CST) daisuke>
#

# import sys module
import sys

if (len (sys.argv) != 2):
    print ("ERROR: one argument must be given!")
    sys.exit ()

# string to be processed
string = sys.argv[1]
    
# conversion from string into integer
try:
    integer = int (string)
except:
    print ("ERROR: string '%s' cannot be converted into integer!" % string)
    integer = None
else:
    print ("string '%s' is successfully converted into integer." % string)
finally:
    print ("trial to convert string into integer completed.")

# printing result
if (integer):
    print ("result of the conversion: %s ==> %d" % (string, integer) )
else:
    print ("conversion from string into integer failed.")

実行してみるでござる。


% ./except_01.py 123
string '123' is successfully converted into integer.
trial to convert string into integer completed.
result of the conversion: 123 ==> 123
% ./except_01.py abc
ERROR: string 'abc' cannot be converted into integer!
trial to convert string into integer completed.
conversion from string into integer failed.

try の部分に試したいことを書き、 except の部分に失敗したときの対処を書 き、 else の部分に成功したときの対処を書き、 finally の部分に最後に行っ ておきたいことを書けばよいでござる。



Frequently accessed files

  1. Computer___Python/20220518_0.html
  2. Computer___Network/20230726_00.html
  3. Misc___Taiwan/20240207_00.html
  4. Computer___Network/20230516_00.html
  5. Computer___FreeBSD/20220621_0.html
  6. Computer___Python/20220715_0.html
  7. Computer___Network/20230508_00.html
  8. Food___Taiwan/20220429_0.html
  9. Computer___NetBSD/20220817_3.html
  10. Computer___Python/20220410_0.html
  11. Computer___Network/20240416_00.html
  12. Computer___Network/20240130_00.html
  13. Computer___Debian/20210223_1.html
  14. Computer___NetBSD/20230119_00.html
  15. Computer___Python/20210124_0.html
  16. Computer___Python/20221013_0.html
  17. Computer___NetBSD/20220818_1.html
  18. Computer___NetBSD/20220428_0.html
  19. Science___Math/20220420_0.html
  20. Computer___NetBSD/20240101_02.html
  21. Computer___NetBSD/20220808_0.html
  22. Computer___TeX/20230503_00.html
  23. Computer___NetBSD/20230515_00.html
  24. Science___Astronomy/20220503_0.html
  25. Computer___NetBSD/20210127_0.html
  26. Computer___Python/20240101_00.html
  27. Computer___Network/20220413_1.html
  28. Computer___Python/20220816_1.html
  29. Computer___NetBSD/20210204_0.html
  30. Travel___Taiwan/20220809_2.html


HTML file generated by Kinoshita Daisuke.