相关疑难解决方法(0)

创建随机二进制文件

我正在尝试使用python来创建随机二进制文件.这就是我已经拥有的:

f = open(filename,'wb')
for i in xrange(size_kb):
    for ii in xrange(1024/4):
        f.write(struct.pack("=I",random.randint(0,sys.maxint*2+1)))

f.close()
Run Code Online (Sandbox Code Playgroud)

但它非常慢(我的3.9GHz SSD磁盘机上size_kb = 1024,为0.82秒).一个很大的瓶颈似乎是随机int生成(用0替换randint()会将运行时间从0.82s减少到0.14s).

现在我知道有更有效的方法来创建随机数据文件(即dd if =/dev/urandom)但是我试图解决这个问题是为了好奇...有没有明显的方法来改善它?

python random

17
推荐指数
1
解决办法
2万
查看次数

如何在Windows 7中使用Python廉价创建一个非常大的文件?

可能重复:
在Windows系统上快速创建大文件?

出于测试目的,我希望能够创建和删除非常大的文件(几个GB).我没有必要写任何特定于他们的东西.它们可能是随机数据.有没有办法通过简单地分配磁盘上的空间来生成一个大文件?如果没有,写这样一个文件的最快方法是什么?要在几秒钟内创建文件是可取的.

我需要在Python脚本中执行此操作,并且在Windows 7上执行此操作.

python filesystems file windows-7

8
推荐指数
1
解决办法
5965
查看次数

如何使用python中的空数据有效填充文件?

我需要创建任意大小的文件,不包含数据.可能非常大.虽然我可以循环并编写一个空字符,直到我达到文件大小,这似乎很难看.

with open(filename,'wb') as f:
   # what goes here?
Run Code Online (Sandbox Code Playgroud)

什么是高效,pythonic的方式来做到这一点?

python file

5
推荐指数
2
解决办法
4237
查看次数

如何使用 Python 有效地分配预定义大小的文件并用非零值填充它?

我正在编写一个程序,该程序使用动态编程来解决一个难题。DP 解决方案需要存储一个大表。整个表占用大约 300 Gb。物理上它存储在 40 ~7Gb 文件中。我用 byte 标记未使用的表条目\xFF。我想快速为这张桌子分配空间。该程序必须同时在 Windows 和 Linux 下运行。

简而言之,我想以跨平台的方式有效地创建填充特定字节的大文件。

这是我目前使用的代码:

def reset_storage(self, path):
    fill = b'\xFF'

    with open(path, 'wb') as f:
        for _ in range(3715948544 * 2):
            f.write(fill)
Run Code Online (Sandbox Code Playgroud)

创建一个 7 Gb 文件大约需要 40 分钟。我如何加快速度?

我查看了其他问题,但似乎没有一个是相关的:

python linux windows file bigdata

2
推荐指数
1
解决办法
98
查看次数

标签 统计

python ×4

file ×3

bigdata ×1

filesystems ×1

linux ×1

random ×1

windows ×1

windows-7 ×1