Creating a file with $SIZE

Robert Bossy Robert.Bossy at jouy.inra.fr
Wed Mar 12 09:44:17 EDT 2008


Matt Nordhoff wrote:
> Robert Bossy wrote:
>   
>> k.i.n.g. wrote:
>>     
>>> I think I am not clear with my question, I am sorry. Here goes the
>>> exact requirement.
>>>
>>> We use dd command in Linux to create a file with of required size. In
>>> similar way, on windows I would like to use python to take the size of
>>> the file( 50MB, 1GB ) as input from user and create a uncompressed
>>> file of the size given by the user.
>>>
>>> ex: If user input is 50M, script should create 50Mb of blank or empty
>>> file
>>>   
>>>       
>> def make_blank_file(path, size):
>>     f = open(path, 'w')
>>     f.seek(size - 1)
>>     f.write('\0')
>>     f.close()
>>
>> I'm not sure the f.seek() trick will work on all platforms, so you can:
>>
>> def make_blank_file(path, size):
>>     f = open(path, 'w')
>>     f.write('\0' * size)
>>     f.close()
>>     
>
> I point out that a 1 GB string is probably not a good idea.
>
> def make_blank_file(path, size):
>     chunksize = 10485760 # 10 MB
>     chunk = '\0' * chunksize
>     left = size
>     fh = open(path, 'wb')
>     while left > chunksize:
>         fh.write(chunk)
>         left -= chunksize
>     if left > 0:
>         fh.write('\0' * left)
>     fh.close()
>   
Indeed! Maybe the best choice for chunksize would be the file's buffer 
size... I won't search the doc how to get the file's buffer size because 
I'm too cool to use that function and prefer the seek() option since 
it's lighning fast regardless the size of the file and it takes near to 
zero memory.

Cheers,
RB



More information about the Python-list mailing list