Python | エラーの原因と解決策まとめ

2020-01-23Python, Python エラー関連

Pythonでのエラーの原因と解決策まとめ

Pythonを勉強しつつ、遭遇したことのあるエラーとその原因や解決策をまとめていきます。

cannot concatenate 'str’ and 'int’ objects args

'str’と 'int’オブジェクトを連結できません

str(文字列)型とint(数値)型の値を、そのまま連結した文字列または数値として加算できない時にできないので出るエラー。

文字列にする場合は連結する際にint(数値)型の値をstr()で文字列に変換する。

a = 'taro'
b = 200
text = a + str(b)

print(sum)

# taro200

数値の計算が必要だった場合は、いずれかの値がクォーテーションで括られた文字列になっていないか確認する。

片方が文字列で定義されている必要がある場合は、処理時にint()で数値に変換する。

a = 100
b = 200
sum = a + int(b)

print(sum)

# 300

expected a character buffer object

文字バッファーオブジェクトが必要

処理を実行する為には、値が文字列である必要がある。

テキストファイルに数値のみを書き込む際などに発生する。

count = 2
file.write(count) #エラーとなる
file.write(str(count)) #OK

name 'xxx' is not defined

名前 'xxx'は定義されていません

未定義の変数名や関数名などが記述されていたりタイプミスで文字列となっていなかったりすると出るエラー。

takes exactly 1 argument (0 given)

~はちょうど1つの引数(0が与えられます)

関数の実行に必要なオプション引数が、呼び出し側で付与されていない場合など数が合わない場合に出るエラー。
関数側で必要としているオプション引数の数と、呼び出し側で付与されている数が表示される。

呼び出し元で必要な引数を付与または不要な引数を除去する。

また、関数側の引数にデフォルト値を与えることで呼び出し時に引数を付与しなくても良くなる。

def test_function(x=0):
    print(x)

test_function()

takes no arguments (2 given)

~は引数を取りません(1つ指定)

関数側でオプション引数の受け取りを定義していないが送信側で付与していると出るエラー。

必要に応じて、関数側でオプション引数の受け取りを定義するか、送信側の付与を削除する。

File not open for reading

読み取りファイルが開いていません

指定のファイルが開いていないか、読み取り用で開かれていない。
または読み取り用で開かれていたが、既に.closedで閉じられている。

File not open for writing

書き込み用に開いていないファイル

ファイルへの書き込み処理で、対象のファイルが書き込みモードで開かれていない時に発生する。

Is a directory: 'xxx'

ディレクトリです。

指定した要素がファイルではなくディレクトリだった場合などに出るエラー。

No such file or directory

そのようなファイルまたはディレクトリはありません。

ファイル・ディレクトリへの操作処理で、対象のファイル・ディレクトリが見つからなかった場合にでるエラー。

2020-01-23Python, Python エラー関連

Posted by Yousuke.U