fscanf不能在cTypepython中工作

2024-09-21 02:41:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着围绕google的word2vec,为他们的新闻组使用ctypes在python中预先训练向量。你知道吗

我这里有一段代码:

void initialize(){
  ...
  long long words, size;
  char *fname = "GoogleNews-vectors-negative300.bin.gz";
  strcpy(file_name, fname);
  printf("%s\n", file_name);
  f = fopen(file_name, "rb");
  if (f == NULL) {
      printf("Input file not found\n");
      return -1;
  }

  fscanf(f, "%lld ", &words);
  fscanf(f, "%lld", &size);
  printf("size of words is %d\n", words);
  ...
}

当我从主函数调用它时,这段代码运行良好。然而,当我将它编译成一个.so文件并从ctypes调用它时,单词总是为零。通过ftell检查,我注意到fscanf不会向前移动文件指针,并且fscanf总是返回0。它是一个二进制文件,所以我不确定fscanf除了将这个3gb的二进制文件转换成一个更大的.csv文件并从那里读取它之外还能做什么。你知道吗

如何修复?在这种情况下,避免fscanf的备用路径也会起作用。你知道吗


Tags: 文件namesizegoogle二进制word2vecctypesfname

热门问题