【发布时间】:2019-08-28 11:24:54
【问题描述】:
我想知道使用yield进行文件处理是否是一种好习惯,
所以目前我使用一个函数 f()
f 遍历文件对象列表并产生文件对象。
files = []
for myfile in glob.glob(os.path.join(path, '*.ext')):
f = open(myfile, 'r')
files.append(f)
def f():
for f_obj in files:
yield f_obj
f_obj.close()
for f_obj in f():
// do some processing on file.
这是在 Python 中处理文件的正确方法吗?
【问题讨论】:
-
什么是
files?它是字符串列表(文件路径)还是它们已经打开文件对象? -
它们是打开的文件对象,我想知道这样使用yield是否安全,因为函数f被挂起并返回到下一行。
-
这太模糊了。我会更担心你从哪里得到
files,以及你如何管理资源(以及为什么你首先有一个可迭代的打开句柄)。 -
也就是说,files 是我通过浏览目录获取的打开文件对象的列表。我已将其添加到代码中。
标签: python python-3.x