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')

我的问题是,如果第二个参数“test_staff/d2.txt”损坏(文件不存在),如何继续执行一个函数(第三个参数)?

我看到了几种方法:

  1. 编写函数来传递存在
  2. 使用 try, throw, finally。

但它如何与“来自 pep 的声明”一起执行?

谢谢!

upd:函数名称从_ _ initial _ _ () 更改为initial ()

4

2 回答 2

4

我建议检查文件是否存在或做一些尝试/除了

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")

有些人说“Try and Catch”而不是做很多检查,还有一些人更喜欢检查而不是尝试和捕捉!恕我直言,他们俩都很好!

于 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 回答