web-dev-qa-db-ja.com

Try&Exceptを使用したファイルオープン関数Python 2.7.1

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

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

6
O.rka

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

これは、ファイルを読み取りモードで開きたいためと考えられます。 「U」を「r」に置き換えます。

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

4
D K

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

3
JrBenito