假设我们想要实现PHP的等价物file_get_content.
什么是最佳做法?(优雅可靠)
这是一些命题,它们是否正确?
使用with声明:
def file_get_contents(filename):
with file(filename) as f:
s = f.read()
return s
Run Code Online (Sandbox Code Playgroud)
使用标准open()安全?
def file_get_contents(filename):
return open(filename).read()
Run Code Online (Sandbox Code Playgroud)
在任一解决方案中文件描述符会发生什么
Bri*_*ian 49
在CPython的当前实现中,两者通常会立即关闭该文件.但是,Python语言对第二个语言没有这样的保证 - 文件最终将被关闭,但是终结器可能在下一个gc循环之前不会被调用.像Jython和IronPython这样的实现会像这样工作,因此明确关闭文件是一种很好的做法.
我说使用第一种解决方案是最好的做法,尽管open通常是首选file.请注意,如果您更喜欢第二个示例的简洁,您可以稍微缩短一下:
def file_get_contents(filename):
with open(filename) as f:
return f.read()
Run Code Online (Sandbox Code Playgroud)
__exit__当您因任何原因离开正文时,上下文管理器的部分将执行,包括异常并从函数返回 - 不需要使用中间变量.
| 归档时间: |
|
| 查看次数: |
33927 次 |
| 最近记录: |