2

良い一日!私は以下のコードを持っています:

def initial(*args):
    for arg in args:
        with open(arg) as f:
            print 'passed'

このコードから呼び出されました:

if __name__ == '__main__':
   initial('test_staff/1.txt', 'test_staff/d2.txt', 'test_staff/1.txt')

私の質問は、2番目のパラメーター'test_staff / d2.txt'が壊れている(ファイルが存在しない)場合、(3番目のパラメーターを使用して)関数の実行を続行するにはどうすればよいですか?

私はそれを行うためのいくつかの方法を見ます:

  1. 存在を渡す関数を書く
  2. 最後に、try、throwを使用します。

しかし、それは「pepからのステートメント付き」でどのように機能しますか?

ありがとうございました!

upd:関数名が_ _ initial _ _()からinitial()に変更されました

4

2 に答える 2

4

ファイルが存在するかどうかを確認するか、try / exceptを実行することをお勧めします

import os

def main(*args):
    for arg in args:
        if not os.path.exists(arg):
            continue

        with open(arg) as f:
            print("passed")

それ以外の場合は、例外をキャッチできます ( IOError)

def main(*args):
    for arg in args:
        try:
            with open(arg) as f:
                print("passed")
        except IOError:
            print("File doesn't exist")

多くのチェックを行う代わりに「トライ アンド キャッチ」と言う人もいれば、トライ アンド キャッチよりもチェックを好む人もいます。私見、どちらも元気です!

于 2012-05-14T10:14:50.117 に答える
0
def main(*args):
    for arg in args:
        try:
            f = open(arg)
            print 'passed'
            break
        except:
            pass
        else:
            with f:
                do_stuff_with(f)

見た目はあまりいいとは言えませんが…

于 2012-05-14T10:06:19.743 に答える