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

ファイルが存在するかどうかを確認する関数を作成しようとしていますが、存在しない場合はエラーメッセージを出力して0を返します。なぜこれは動作していないのですか?Try&Except Python 2.7.1でファイルを開く関数

+1

「作業していない」という意味を指定します。 – kindall

答えて

11

例外ブロック内から戻る場合は、戻り値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 
+1

詳細については、OregonTrailが特定した問題は、あなたの 'return 0'が' if'文と同じレベルにインデントされていることです。これは 'return'を' if'の外側に置くので、エラーがあったかどうかに関わらず関数は '0'を返します。 – kindall

+0

私はどのように関数を呼び出しますか?私は変数にファイルを設定する必要がありますか?もし私がそれをしたら、ファイルを開くだけです。 。 。 –

+0

私はいくつかの例を肉付けするためにいくつかの行を追加しました – OregonTrail

2

これは、ファイルを読み取りモードで開くためです。 "U"を "r"に置き換えます。

もちろん、os.path.isfile('filepath')も使用できます。

2

私はos.path.isfile()が実際にファイルを開く必要がないので、ファイルが存在するかどうかを単にチェックしたいと思うと良いと思います。とにかく、開いた後は、ファイルを閉じることを検討したベストプラクティスであり、上記の例はこれを含んでいませんでした。

+0

私はこれがより好きです。ディレクトリをチェックするバージョンもありますか? –

+1

isfileは間違いなく良いです。プレーン・ファイルの場合、ファイルを開くには無害ですが、たとえば名前付きパイプの場合は予期しない副作用が発生する可能性があります。また、スコープを離れるときは、ファイルは自動的に閉じます。 – mlv

関連する問題