gpt4 book ai didi

python - 一次读取整个文件

转载 作者:太空狗 更新时间:2023-10-30 01:52:10 26 4
gpt4 key购买 nike

我正在尝试编写一个获取路径并返回此文件内容的函数。不需要错误处理。我想出了以下内容

def read_all_1(path):
f = open(path)
s = f.read()
f.close()
return s

def read_all_2(path):
with open(path) as f:
return f.read()

我的问题:

  • 哪个被认为更 pythonic?
  • 在第二个函数中,是否会通过“with”自动关闭文件?
  • 有没有更好的方法,也许是一些内置函数?

最佳答案

他们都非常pythonic。为了解决你的第二个问题,在第二个功能中,文件确实会自动关闭。这是与 with 语句一起使用的协议(protocol)的一部分。具有讽刺意味的是,在您的第一个示例中,文件保证会被关闭(稍后会详细说明原因)。

最终,我会选择使用 with 语句,原因如下 - 根据 PEP 343 :

with EXPR as VAR:
BLOCK

翻译成:

mgr = (EXPR)
exit = type(mgr).__exit__ # Not calling it yet
value = type(mgr).__enter__(mgr)
exc = True
try:
try:
VAR = value # Only if "as VAR" is present
BLOCK
except:
# The exceptional case is handled here
exc = False
if not exit(mgr, *sys.exc_info()):
raise
# The exception is swallowed if exit() returns true
finally:
# The normal and non-local-goto cases are handled here
if exc:
exit(mgr, None, None, None)

如您所见,在这种情况下您得到了很多保护 - 无论中间代码发生什么,您的文件都可以保证关闭。这也确实有助于提高可读性;想象一下,如果您每次想要打开一个文件时都必须放入这么大的代码块!

关于python - 一次读取整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com