当第一个文件不存在时,python中的习惯用于打开第二个文件

时间:2012-07-06 06:48:17

标签: python file-io

我想编写一个脚本,检查并打开一个名为“.mysettings”的设置文件(如果它存在于HOME目录中)。如果HOME-directory中没有该文件,它应该尝试在当前目录中打开一个文件(如果它存在)。

python中是否有成语或单行程序来编写类似的内容?

我现在能想到的最好方法是尝试使用try {catch}块打开第一个文件,如this question中所述,然后尝试第二个文件。

3 个答案:

答案 0 :(得分:3)

这是python方式。没有一个衬垫,但清晰,易于阅读。

try:
    with open("/tmp/foo.txt") as foo:
        print foo.read()
except:
    try:
        with open("./foo.txt") as foo:
            print foo.read()
    except:
        print "No foo'ing files!"

当然,你也可以做这样的事情:

for f in ["/tmp/foo.txt", "./foo.txt"]:
    try:
        foo = open(f)
    except:
        pass
    else:
        print foo.read()
  • 美丽胜过丑陋。
  • 可读性很重要。

答案 1 :(得分:3)

喜欢这个吗?

f = open(fn1 if os.path.exists(fn1) else fn2, "r")

(虽然它与try / catch不完全相同,因为在检查时fn1存在的情况下仍然会抛出极少数情况。)

答案 2 :(得分:0)

这个怎么样

filename = '/tmp/x1' if os.path.exists('/tmp/x1') else '/tmp/x2'