我应该在函数外部还是内部打开文件?

2024-04-19 15:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

也许这个问题没有意义,但我想知道在Python中是否有一个“推荐的实践”来向函数传递文件。在

我应该传递文件的路径还是打开的文件本身?在

我应该这样做:

def func(file):
  file.write(...)

with open(file_path, 'w') as file:
  func(file)

…或:

^{pr2}$

是吗?在

有什么理由用一种方法代替另一种方法吗?在


Tags: 文件path方法函数路径defaswith
2条回答

建议传递类似文件的对象而不是传递路径。这意味着将更容易在其他类型的文件中重用您的函数,而不仅仅是在磁盘上有路径的文件,例如BytesIOhttps://docs.python.org/3/library/io.html#io.BytesIO。在

您仍然可以对类似文件的对象使用with语句,不必只在打开它时才使用它。在

这两种方法各有利弊。当一个函数接受一个打开的文件对象时,与其他类似文件的对象(如sio.StringIO)一起使用会变得更容易。另一方面,在函数中使用with语句非常优雅。混合解决方案是同时接受路径(字符串)和类似文件的对象。有几个图书馆这样做。在

相关问题 更多 >