【问题标题】:Creating a custom file like object python suggestions?创建一个自定义文件,如对象 python 建议?
【发布时间】:2010-10-19 03:01:45
【问题描述】:

您好,我希望为我们在工作中使用的内部二进制格式实现我自己的自定义文件,例如对象(我真的不想详细介绍,因为我不知道是否可以)。我正在尝试一种更 Pythonic 的做事方式,因为目前我们有两个读/写函数(每个 ~ 4k 行代码)可以做所有事情。然而,我们需要更多的控制/技巧,因此我重写了这些东西。

我查看了 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标准库中的一个很好的例子吗?

【问题讨论】:

    标签: python file


    【解决方案1】:

    “类文件”的构成实际上取决于您打算将其用于什么;并非所有方法都需要实现(或有一个健全的实现)。

    话虽如此,file 和 iterator 文档就是您想要的。

    【讨论】:

    • 谢谢,我刚刚实现了一个粗略的框架,看起来效果很好。
    • 我知道这已经快 9 年了,但我只想指出 file 链接已损坏。
    【解决方案2】:

    为什么不将数据填充到 StringIO 中?否则,您可以查看文档并实现所有类似文件的方法。说实话,Python 中没有真正的接口,并且某些功能(如 tell())可能对您的文件没有意义,因此您可以不实现它们。

    【讨论】:

    • 它比 StringIO 复杂得多,我们需要做一些事情,比如压缩,当成功创建二进制包时更新一些其他文件。
    猜你喜欢
    • 2012-05-02
    • 2017-12-04
    • 2015-12-02
    • 2018-04-19
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2023-03-20
    相关资源
    最近更新 更多