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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to