python - Python我应该在阅读后关闭文件吗
问题描述
我正在使用 Django 1.10 和 Python 3.5.3
在其中一个视图中,用户正在发送一个文件,而我正在这样阅读它:
def create(self, request, *args, **kwargs):
file_serializer = self.get_serializer(data=request.data)
file_serializer.is_valid(raise_exception=True)
if file_serializer.is_valid():
if 'file' in request.data:
# hash file
hasher = hashlib.md5()
read_file = request.data['file'].read()
hasher.update(read_file)
current_file_hash = hasher.hexdigest()
我的问题是 - 之后我应该关闭文件吗?好像我真的没有打开它。
解决方案
据我所知,request.data['file']
实际上是一个打开的文件描述符,而不是文件名。如果您知道自己request
会清理自己的资源,那么显然不需要显式关闭文件。否则,用 关闭它request.data['file'].close()
。在这种情况下,最好将整个函数体包装在try
/finally
块中,以确保无论如何关闭文件:
try:
# read from file etc.
finally:
request.data['file'].close()
推荐阅读
- sql - Vertica ILIKE 大型数据集
- javascript - 平日。如何在以下代码中修复此错误?
- matlab - 当我应用 notboxplot 函数生成 beeswarm 箱线图时,如何更改标记透明度?
- php - PHP Regex 提取除换行符和制表符之外的所有内容
- python - / 不支持的操作数类型:python中的“list”和“int”
- node.js - Hyperledger Fabric NodeJS Shim - getHistoryForKey
- visual-studio - Azure DevOps 2019 查看 Visual Studio 中的构建过程
- javascript - 为什么 'd3.select("svg") == d3.select("svg")' 解析为 'false'?
- r - 有没有办法在 R 中创建热图,每列都有自己的比例?
- javascript - 如何防止用户中断 window.scrollTo()?