我正在尝试在 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 语句也会在这些情况下自动关闭文件。
您可以使用os.path.exists
和条件表达式:
import os.path as opath
def readlines(path):
return open(path).readlines() if opath.exists(path) else []
如果您正在进行惰性评估(它只会读取调用者消耗的行数),请将其与生成器表达式结合起来:
import os.path as opath
def readlines(path):
try:
return (l for l in open(path)) if opath.exists(path) else ()
except FileNotFoundError:
return ()