gpt4 book ai didi

python - 文件名与文件对象作为函数参数

转载 作者:太空狗 更新时间:2023-10-29 17:19:16 25 4
gpt4 key购买 nike

如果一个函数将文本文件的名称作为输入,我可以将其重构为取一个文件对象(我称之为“流”;有更好的词吗?)。优点很明显 - 将流作为参数的函数是:

  • 编写单元测试要容易得多,因为我不需要仅为测试创建临时文件
  • 更灵活,因为我可以在不知何故已经将文件内容保存在变量中的情况下使用它

流有什么缺点吗?或者我是否应该始终将函数从文件名参数重构为流参数(当然,假设文件是​​纯文本文件)?

最佳答案

... 下面是 xml.etree.ElementTree 模块如何实现 parse功能:

def parse(self, source, parser=None):
close_source = False
if not hasattr(source, "read"):
source = open(source, "rb")
close_source = True
...

由于文件名是一个字符串,它没有read()方法(这里检查了那个名字的任何属性);但是,打开的文件有它。这四行使其余代码通用。唯一的麻烦是您必须记住是否关闭文件对象(此处命名为 source)。如果它在里面是open,那么它必须是关闭的。否则不得关闭。

实际上,文件与流略有不同。流可能是无限的,而文件通常不是(除非某些设备被映射为文件)。处理时的重要区别是,您永远无法立即将流读入内存。您必须按 block 处理它。

关于python - 文件名与文件对象作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com