0

「.mysettings」という設定ファイルがHOMEディレクトリにあるかどうかを確認して開くスクリプトを作成したいと思います。ファイルがHOMEディレクトリに存在しない場合、現在のディレクトリに存在する場合は、現在のディレクトリでファイルを開こうとする必要があります。

そのようなものをプログラムするためのイディオムやPythonのワンライナーはありますか?

私が今考えることができる最善の方法は、この質問で説明されているように、try-catchブロックを使用して最初のファイルを開いてから、2番目のファイルを試すことです。

4

3 に答える 3

3

これは、Pythonでそれを行う方法です。ライナーは1つではありませんが、明確で読みやすいです。

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()
  • 醜いより美しい方がいい。
  • 読みやすさが重要です。
于 2012-07-06T06:53:38.257 に答える
3

このような?

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

(try / catchとはまったく同じではありませんが、チェック時にfn1が存在していた場合でもスローされることがまれにあります。)

于 2012-07-06T06:54:17.603 に答える
0

これはどう

filename = '/tmp/x1' if os.path.exists('/tmp/x1') else '/tmp/x2'
于 2012-07-06T06:55:23.213 に答える