创建类似文件的自定义对象的python建议?

9 投票
2 回答
13941 浏览
提问于 2025-04-16 05:43

你好,我想为我们公司内部使用的一种二进制格式实现一个自定义的文件类对象(我不想详细说明,因为我不确定是否可以)。我希望用更符合Python风格的方式来做这件事,因为目前我们有两个函数,分别是读取和写入(每个函数大约有4000行代码),它们完成所有的工作。不过我们需要更多的控制和灵活性,所以我才想重写这些代码。

我查看了Python的文档,里面提到我需要实现哪些方法,但没有提到像iter()这样的东西。

基本上,我想做的事情是这样的:

output_file_objs = [
    open("blah.txt", "w")
    open("blah142.txt", "wb")
    my_lib.open("internal_file.something", "wb", ignore_something=True)
]

data_to_write = <data>

for f in output_file_objs:
    f.write(data_to_write)

这样我就可以把它和其他的混合在一起,基本上实现一种透明度。我会添加自定义的方法,这没问题。

有没有什么好的参考资料,关于如何编写自己的自定义文件类对象?比如说,有没有什么限制或者特殊的方法(比如iter)我应该实现的?

或者在Python标准库中有没有好的例子可以参考?

2 个回答

1

为什么不把你的数据放在StringIO里呢?如果不这样做,你可以查看文档,自己实现所有类似文件的方法。其实,Python里并没有真正的接口,有些功能(比如tell())可能对你的文件来说并不适用,所以你可以选择不去实现它们。

5

什么是“类文件”的东西,其实取决于你打算怎么用它;并不是所有的方法都必须实现(或者说实现得合理)。

说到这里,file迭代器 的文档就是你需要的资料。

撰写回答