I’m trying to learn Python, again, and the problem is in trying to code things which would be simple in C/Perl/etc which are hard in Python.
I talked about how cool mkfile was in Creating a small zpool for testing and so I thought I would try to code that up in Python. Remember, this is my first whack at Python in 2 years, so it is all pretty much fresh and I’m in a learning mode.
I struggled with strings, bytearrays, and bufferedreaders. I still don’t know how to open a bufferedreader.
But I finally got to a working piece of code:
import array def mkfile(file, size) : chunk = 1024 loopto = size // chunk filler = size % chunk bite = bytearray(chunk) try : f = open(file, "wb") for n in range(loopto) : f.write(bite) if filler > 0 : f.write(bytearray(filler)) finally: f.close() mkfile("h1024.out", 1024) mkfile("h1023.out", 1023) mkfile("h64.out", 64) mkfile("h1025.out", 1025) mkfile("h10250.out", 10250)
And it actually yields appropriately sized files:
[thomas@snakey src]$ ls -la h*.out -rw-r--r-- 1 thomas wheel 1023 Feb 13 15:47 h1023.out -rw-r--r-- 1 thomas wheel 1024 Feb 13 15:47 h1024.out -rw-r--r-- 1 thomas wheel 10250 Feb 13 15:47 h10250.out -rw-r--r-- 1 thomas wheel 1025 Feb 13 15:47 h1025.out -rw-r--r-- 1 thomas wheel 64 Feb 13 15:47 h64.out
Now I need to check to see if they are all zeros:
[thomas@snakey src]$ dd if=/dev/zero of=z10250.out bs=10250 count=1 1+0 records in 1+0 records out 10250 bytes (10 kB) copied, 4.6629e-05 s, 220 MB/s [thomas@snakey src]$ cmp z10250.out h10250.out
So yeah, there are really easy ways to accomplish mkfile.