在python3中如何把文本转换为二进制[python高级教程]

python3" title="python3">python3中把文本转换为二进制的方法:首先修改dirroot为要读取的文件夹的路径;然后遍历所有的文件夹,读取txt文件;最后更改newdirroot为新的目录路径,程序运行完以后会生成和原来一样的目录和dat的二进制文件。

当读取读大量数据的时候,为了加快读取的速度,需要将文本文件转为二进制文件。

python代码如下:

#coding:utf-8

#! /bin/python

import os

import sys

import os.path

import pickle

import  struct

dirroot = "F:feature_train"

newdirroot="F:

ew"

for dirnames in os.listdir(dirroot):

    print ("进入文件夹:" )

    #print dirnames

    for dirname in os.listdir(dirroot+dirnames):

        #print dirname

        if dirname.split('.')[1]!='txt':

            continue

        file=open(dirroot+dirnames+''+dirname,'r')

        filename=dirname.split('.')[0]+'.dat'

        if not os.path.exists(newdirroot+dirnames+''):

            os.makedirs(newdirroot+dirnames+'')

        fileNew=open(newdirroot+dirnames+''+filename,'wb')

        lines=file.readlines()

        for line in lines:

            curLine=line.split(' ')

            for i in range(len(curLine)):

                if len(curLine[i])==0:

                    continue

                parsedata = struct.pack("f",float(curLine[i]))

                fileNew.write(parsedata)

            fileNew.write('

')

 

        fileNew.close()

        file.close()

使用方法:修改dirroot为要读取的文件夹的目录路径,程序会遍历所有的文件夹,读取其中的txt文件。根目录下都是文件夹。                                   newdirroot为新的目录的路径,程序运行完以后会生成跟原来一样的目录和dat的二进制文件。

                   txt文件里为float的格式的数据,可以根据情况修改。

C++ 读取二进制文件:

#include <iostream>

#include <fstream>

#include<stdio.h>

using namespace std; 

int main(int argc, char** argv)

{

printf("www

");

 //std::cout<<"www"<endl;

  float rfea[1024]={0};

        FILE *fp;

        fp = fopen("001.dat", "rb");

        if (fp != NULL){

                fread(rfea, 1024*sizeof(float), 1, fp);

                fclose(fp);

        }

        int i=0;

  for (i=0;i<30 ;i++ )

  {

        printf("%f

",rfea[i]);

  }

  return 0;

}

推荐课程:三节课带你入门python(青灯教育)

以上是 在python3中如何把文本转换为二进制[python高级教程] 的全部内容, 来源链接: utcz.com/z/540465.html

回到顶部