cwdでファイル「data.txt」を開いて行を読み込もうとしています。ファイルが存在しない場合にサブルーチンを終了するためのワンライナー(または閉じる)はありますか。os.path.existsを使用する方法があることを知っています。 IOエラーを試して/除外しますが、ワンライナーまたは最も賢い方法に興味があります
def readfile ():
f = open('data.txt')
lines = f.readlines()
f.close()
cwdでファイル「data.txt」を開いて行を読み込もうとしています。ファイルが存在しない場合にサブルーチンを終了するためのワンライナー(または閉じる)はありますか。os.path.existsを使用する方法があることを知っています。 IOエラーを試して/除外しますが、ワンライナーまたは最も賢い方法に興味があります
def readfile ():
f = open('data.txt')
lines = f.readlines()
f.close()
あなたはwith
オープンを使用することができます
with open('data.txt') as f:
lines = f.readlines()
withステートメントは、ネストされたコードブロックの後にファイルを自動的に閉じます。withステートメントを使用する利点は、ネストされたブロックがどのように終了しても、ファイルを閉じることが保証されることです。ブロックが終了する前に例外が発生した場合、外部の例外ハンドラーによって例外がキャッチされる前にファイルが閉じられます。
ネストされたブロックにreturnステートメント、continueまたはbreakステートメントが含まれている場合、withステートメントはそのような場合にもファイルを自動的に閉じます。
You can use os.path.exists
and a conditional expression:
import os.path as opath
def readlines(path):
return open(path).readlines() if opath.exists(path) else []
And if you're into lazy evaluation (it will only read as many lines as the caller consumes), combine it with a generator expression:
import os.path as opath
def readlines(path):
try:
return (l for l in open(path)) if opath.exists(path) else ()
except FileNotFoundError:
return ()