12

Pythonで発生したエラーからエラー番号を取得する必要があります。

元; Paramikoパッケージを介してディレクトリを転送しようとすると、次のコードでエラーが発生します。

try:
    sftp.put(local_path,target_path)    
except (IOError,OSError),errno:
    print "Error:",errno

出力を取得するために、

Error: [Errno 21] Is a directory

エラー番号を利用して、ディレクトリとディレクトリの内容を転送するためのコードをさらに調べたいと思います。

4

3 に答える 3

15

質問を明確にしていただきありがとうございます。

PythonのほとんどExceptionのsには「エラー番号」がありません。1つの例外(しゃれは意図されていません)はHTTPError、次のような例外です。

import urllib2 
try:
   page = urllib2.urlopen("some url")
except urllib2.HTTPError, err:
   if err.code == 404:
       print "Page not found!"
   else:
       ...

もう1つの例外(bobinceで示されている)は次EnvironmentErrorのとおりです。

import os
try:
   f=open("hello")
except IOError, err:
   print err
   print err.errno
   print err.strerror
   print err.filename

出力

[Errno 2] No such file or directory: 'hello'
2
No such file or directory
hello
于 2010-07-13T21:08:19.603 に答える
4

エラー番号について話している場合は、例外オブジェクトerrno.hのプロパティから取得できますが、 ( 、、およびを含む)でerrnoのみ取得できます。EnvironmentErrorOSErrorIOErrorWindowsError

具体的には、Windows固有のエラー番号を持つプロパティWindowsErrorも取得します。winerror(ただし、PythonがWin32 APIを直接使用することは比較的まれであるため、これらのいずれかはあまり表示されません。)

于 2010-07-13T21:17:43.480 に答える
0

errnoコード内のマジックナンバーを処理しなくてもエラーコードを処理できるパッケージもあります。ここで例を参照してください:IOErrorに関連付けられているPythonエラー番号は安定していますか?

于 2016-05-03T09:57:45.183 に答える