2024-04-19 15:51:14 发布
网友
也许这个问题没有意义,但我想知道在Python中是否有一个“推荐的实践”来向函数传递文件。在
我应该传递文件的路径还是打开的文件本身?在
我应该这样做:
def func(file): file.write(...) with open(file_path, 'w') as file: func(file)
…或:
是吗?在
有什么理由用一种方法代替另一种方法吗?在
建议传递类似文件的对象而不是传递路径。这意味着将更容易在其他类型的文件中重用您的函数,而不仅仅是在磁盘上有路径的文件,例如BytesIOhttps://docs.python.org/3/library/io.html#io.BytesIO。在
您仍然可以对类似文件的对象使用with语句,不必只在打开它时才使用它。在
with
这两种方法各有利弊。当一个函数接受一个打开的文件对象时,与其他类似文件的对象(如sio.StringIO)一起使用会变得更容易。另一方面,在函数中使用with语句非常优雅。混合解决方案是同时接受路径(字符串)和类似文件的对象。有几个图书馆这样做。在
io.StringIO
建议传递类似文件的对象而不是传递路径。这意味着将更容易在其他类型的文件中重用您的函数,而不仅仅是在磁盘上有路径的文件,例如BytesIOhttps://docs.python.org/3/library/io.html#io.BytesIO。在
您仍然可以对类似文件的对象使用
with
语句,不必只在打开它时才使用它。在这两种方法各有利弊。当一个函数接受一个打开的文件对象时,与其他类似文件的对象(如s
io.StringIO
)一起使用会变得更容易。另一方面,在函数中使用with
语句非常优雅。混合解决方案是同时接受路径(字符串)和类似文件的对象。有几个图书馆这样做。在相关问题 更多 >
编程相关推荐