Skip to content

Instantly share code, notes, and snippets.

@loderunner
Last active August 17, 2016 13:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loderunner/f9c64281ea04a139878ae93fd202b2f8 to your computer and use it in GitHub Desktop.
Save loderunner/f9c64281ea04a139878ae93fd202b2f8 to your computer and use it in GitHub Desktop.
import random
import string
import os
import os.path
import binascii
MAX_DEPTH=6
MIN_DIRS=1
MAX_DIRS=5
MIN_FILES=1
MAX_FILES=10
MIN_NAME_LEN=3
MAX_NAME_LEN=15
MIN_FILE_SIZE=1024
MAX_FILE_SIZE=100*1024
CREATE_INTERMEDIATE_FILES=True
def gen_dir(current, depth):
if depth < MAX_DEPTH:
ndirs = random.randint(MIN_DIRS, MAX_DIRS)
for i in range(ndirs):
dirname = ''.join([random.choice(string.letters) for j in range(random.randint(MIN_NAME_LEN, MAX_NAME_LEN))])
dirpath = os.path.join(current, dirname)
print 'Creating %s/' % dirpath
os.mkdir(dirpath)
gen_dir(dirpath, depth + 1)
if CREATE_INTERMEDIATE_FILES or depth >= MAX_DEPTH:
nfiles = random.randint(MIN_FILES, MAX_FILES)
for i in range(nfiles):
filename = ''.join([random.choice(string.letters) for j in range(random.randint(MIN_NAME_LEN, MAX_NAME_LEN))])
filepath = os.path.join(current, filename)
print "Creating %s" % filepath
with file(filepath, 'w') as f:
for _ in range(random.randint(MIN_FILE_SIZE / 256, MAX_FILE_SIZE / 256)):
lnum = random.getrandbits(256 * 8)
s = hex(lnum)[2:]
s = s.rstrip('L')
if len(s) & 1:
s = '0' + s
s = binascii.unhexlify(s)
f.write(s)
def main():
gen_dir('.', 0)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment