[英]How to serialize and deserialize an open file object?
有没有一种方法可以对打开的文件对象进行序列化和反序列化,以使反序列化的对象是具有与序列化对象相同的特性的对象(例如,全路径,打开模式,偏移量,内部缓冲区等)?
就代码而言,将是这样的:
import some_pickle_like_module as splm
with open("infile.bin", "rb") as fp:
first17bytes = fp.read(17)
with open("infile.splm", "wb") as pkl:
splm.dump(fp, pkl)
# and later in the code:
with open("infile.splm", "rb") as pkl:
fp = splm.load(pkl)
next17bytes = fp.read(17)
fp.close()
请注意,此示例有点琐碎(因为我可以dump()和load()文件的名称和偏移量),但是同样适用于压缩文件,在压缩文件中查找给定位置可能非常慢。
不,不可能。 证明:如果关闭文件描述符,则无法在不重新打开文件的情况下取消获取旧对象而无法重新选择。 文件对象是由OS内核定义的,而python没有对此的控制权,因此无法使它们腌制。 唯一的方法是腌制路径,模式和字节偏移,然后在解腌时重新打开文件并移至正确的位置。
无论如何,我都不认为对文件进行腌制不是一个好主意,因为文件可能会被删除,并且解腌失败。 只需腌制/解开内容物即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.