有没有办法直接从python中的二进制文件加载变量?

时间:2020-04-25 02:27:04

标签: python file-io binaryfiles

在C语言中,我可以通过以下方式使用fwrite / fread将变量保存或加载到二进制文件中:

int main()
{
  FILE *fl = fopen("data.bin", "w+");
  FILE *fl2 = NULL;

  struct foo_bar {
    int x;
    char y;
    char *z;
  };

  struct foo_bar a, b;

  a.x = 5;
  a.y = '5';
  a.z = NULL;

  fwrite(&a, sizeof(struct foo_bar), 1, fl);

  fclose(fl);

  fl2 = fopen("data.bin", "r");
  fread(&b, sizeof(struct foo_bar), 1, fl);

  printf("%d %c %d", b.x, b.y, b.z);

  return 0;
}

对我来说重要的关键思想是,我不必解析字符缓冲区,然后使用它们来创建某种类型的对象

struct foo_bar 

使用构造函数,但是我可以直接从文件中直接加载它。

我的问题是:有没有办法在Python中完成此功能?


我为什么要这样做?


我需要将套接字对象的列表从python脚本传递给子过程,而通常要实现我的目标的方法是:首先将套接字写入文件,然后让子过程读取它们从该文件。这样的想法是,通过这些套接字连接的客户端可以开始与作为服务器的子过程进行交互。

但是到目前为止,我在Python中能做的最好的就是将套接字的文件描述符保存到文件中,然后从子过程中加载它们 ,然后将其与套接字的构造函数一起使用以创建新的套接字。

但是我无法访问基础_socket对象的属性,因此我无法恢复与客户端的连接。我希望这是有道理的,我已尽我所能尽量谨慎地表达了这一点。但是,如果不清楚,请告诉我,我很乐意进一步澄清。

0 个答案:

没有答案