7
def FileCheck(fn):       
       try:
           fn=open("TestFile.txt","U") 
       except IOError: 
           print "Error: File does not appear to exist."
       return 0 

ファイルが存在するかどうかをチェックする関数を作成しようとしています。存在しない場合は、エラーメッセージを出力して0を返す必要があります。なぜこれが機能しないのですか?

4

4 に答える 4

23

例外ブロック内から戻る場合は、戻り値0をインデントする必要があります。また、あなたの議論は何もしていません。ファイルハンドルを割り当てる代わりに、この関数で任意のファイルをテストできるようにしたいと思いますか?そうでない場合は、引数は必要ありません。

def FileCheck(fn):
    try:
      open(fn, "r")
      return 1
    except IOError:
      print "Error: File does not appear to exist."
      return 0

result = FileCheck("testfile")
print result
于 2011-12-05T01:17:14.727 に答える
4

これは、ファイルを読み取りモードで開きたいことが原因である可能性があります。「U」を「r」に置き換えます。

もちろん、あなたも使うことができますos.path.isfile('filepath')

于 2011-12-05T01:19:01.927 に答える
3

os.path.isfile()実際にファイルを開く必要がないので、ファイルが存在するかどうかを「確認」したいだけの方が良いと思います。とにかく、開いた後、ファイルを閉じることがベストプラクティスと見なされ、上記の例にはこれが含まれていませんでした。

于 2016-03-30T14:19:48.400 に答える
-1

ファイルが存在するかどうかを確認したいだけの場合は、pythonosライブラリに。などのソリューションがありますos.path.isfile('TestFile.txt')。最後にfinallyブロックでファイルを閉じる必要があるため、OregonTrailsの回答は機能しませんが、そのためには、ファイルポインターを、ソリューションの目的全体を無効にするtryandexceptブロックの外部の変数に格納する必要があります。

于 2019-07-23T14:43:39.030 に答える