Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将原始数字写入磁盘_Python_C++_Disk_Diskspace - Fatal编程技术网

Python 将原始数字写入磁盘

Python 将原始数字写入磁盘,python,c++,disk,diskspace,Python,C++,Disk,Diskspace,我突然想到,我不知道如何将原始数值写入磁盘。 在Python或C++中我该怎么做?! 我正在运行一些模拟,并将中间结果写入磁盘,以便在崩溃时不会从头开始。 可悲的是,这些值在我的硬盘上占用了上千兆字节的空间 将数值以浮点数的形式写入磁盘会占用更少的磁盘空间吗?或者我没有考虑其他开销吗?您可以使用自己的二进制格式,但这可能是个坏主意 如果您使用Python处理数字数据,那么几乎可以肯定您使用的是numpy。如果你没有使用numpy,你应该注意使用numpy,这很好 一旦将数据放入numpy数组中,

我突然想到,我不知道如何将原始数值写入磁盘。 在Python或C++中我该怎么做?! 我正在运行一些模拟,并将中间结果写入磁盘,以便在崩溃时不会从头开始。 可悲的是,这些值在我的硬盘上占用了上千兆字节的空间


将数值以浮点数的形式写入磁盘会占用更少的磁盘空间吗?或者我没有考虑其他开销吗?

您可以使用自己的二进制格式,但这可能是个坏主意

如果您使用Python处理数字数据,那么几乎可以肯定您使用的是
numpy
。如果你没有使用
numpy
,你应该注意使用
numpy
,这很好


一旦将数据放入
numpy
数组中,就可以使用它们的方法了。

Python中的一般方法是使用


(您可以选择要使用的字节顺序—我使用
来指示网络字节顺序以便于移植,或者不使用任何指示符来使用本机字节顺序。实际上,我不确定IEEE 754是否指定了字节顺序,所以我不确定推荐什么。也许使用默认值是最好的。)

最通用、功能最强大的选项是在的帮助下使用。网址:

它可以让你存储大量的数字数据,而且很容易 操纵NumPy中的数据。例如,您可以将图像分割为 存储在磁盘上的多TB数据集,就好像它们是真正的NumPy 数组。数千个数据集可以存储在一个文件中, 分类和标记,但你想

它也有一个


HDF5格式在科学计算界广泛使用,并由许多软件读取/写入。HDF5格式的数据可以使用快速操作。

在优化之前,请确保至少执行类似操作(将数字类型以二进制表示形式存储在磁盘上)。如果你在这一点,文件大小仍然太大,你可以考虑不同类型的压缩格式。
#include <iostream>
#include <fstream>

typedef int32_t my_numeric_type;

int main()
{
    using namespace std;

    {
        ofstream output_file("numbers.dat", ios::binary);
        if( !output_file )
        {
            cout << "Failed to open file for writing" << endl;
            return 1;
        }

        for( my_numeric_type i = 0 ; i <= 1000; ++i )
            output_file.write(reinterpret_cast<const char*>(&i), sizeof(i));
    }

    {
        ifstream input_file("numbers.dat", ios::binary);
        if( !input_file )
        {
            cout << "Failed to open file for reading" << endl;
            return 1;
        }

        my_numeric_type i;
        while( input_file.read(reinterpret_cast<char*>(&i), sizeof(i)) )
            cout << i << endl;
    }

    return 0;
}
#包括
#包括
typedef int32_t my_numeric_type;
int main()
{
使用名称空间std;
{
流输出文件(“numbers.dat”,ios::binary);
如果(!输出文件)
{

cout您是如何写入磁盘的?有多少有效数字写入磁盘?多久一次(例如,每秒一次,每分钟一次,循环速度尽可能快?)?通常写入完整的数字并尽可能快地写入。最初使用write csv或通过常规Python IO写入。我怎么从未见过简单的“保存”呢之前的函数?!这看起来很棒!这是我将使用的解决方案,因为这是一个我跳过的完整解决方案。谢谢!
#include <iostream>
#include <fstream>

typedef int32_t my_numeric_type;

int main()
{
    using namespace std;

    {
        ofstream output_file("numbers.dat", ios::binary);
        if( !output_file )
        {
            cout << "Failed to open file for writing" << endl;
            return 1;
        }

        for( my_numeric_type i = 0 ; i <= 1000; ++i )
            output_file.write(reinterpret_cast<const char*>(&i), sizeof(i));
    }

    {
        ifstream input_file("numbers.dat", ios::binary);
        if( !input_file )
        {
            cout << "Failed to open file for reading" << endl;
            return 1;
        }

        my_numeric_type i;
        while( input_file.read(reinterpret_cast<char*>(&i), sizeof(i)) )
            cout << i << endl;
    }

    return 0;
}