Create a random file/directory tree/structure in python fortesting purposes.
Project description
Description
Create a random file and directory tree/structure for testing purposes.
Installation
AnkiPandas can be installed with the python package manager:
pip3 install randomfiletree
For a local installation, you might want to use the --user switch of pip. You can also update your current installation with pip3 install --upgrade ankipandas.
For the latest development version you can also work from a cloned version of this repository:
git clone https://github.com/klieret/randomfiletree/
cd randomfiletree
pip3 install --user .
Usage
Simple command line interface:
randomfiletree <folder> -f <file creation probability> -d <directory creation probability> -r <repeat>
Type randomfiletree -h to see all supported arguments.
If the executable is not in your path after installation, you can also use python3 -m randomfiletree <arguments as above>.
import randomfiletree randomfiletree.iterative_gaussian_tree( "/path/to/basedir", nfiles=2.0, nfolders=0.5, maxdepth=5, repeat=4 )
Randomfiletree will now crawl through all directories in /path/to/basedir and create new files with the probabilities given in the arguments.
It is possible to pass an optional function to generate the random filenames oneself:
import random import string def fname(): length = random.randint(5, 10) return "".join( random.choice(string.ascii_uppercase + string.digits) for _ in range(length) ) + '.docx' randomfiletree.core.iterative_gaussian_tree( "/path/to/basedir", nfiles=100, nfolders=10, maxdepth=2, filename=fname )
The payload optional argument can be used to generate file contents together with their names. For example, it can be used to replicate some template files with randomized names:
import itertools import pathlib import randomfiletree def callback(target_dir: pathlib.Path) -> pathlib.Path: sourcedir = pathlib.Path("/path/to/templates/") sources = [] for srcfile in sourcedir.iterdir(): with open(srcfile, 'rb') as f: content = f.read() sources.append((srcfile.suffix, content)) for srcfile in itertools.cycle(sources): path = target_dir / (randomfiletree.core.random_string() + srcfile[0]) with path.open('wb') as f: f.write(srcfile[1]) yield path randomfiletree.core.iterative_gaussian_tree( "/path/to/basedir", nfiles=10, nfolders=10, maxdepth=5, repeat=4, payload=callback )
if both filename and payload passed, the first option is ignored.
Take a look at the documentation to find out more about the additional functionality provided.
License
This software is lienced under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for RandomFileTree-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c22868879754231452c715b97829a6ddb1d5d59941ed05822f7a0285204c8fe |
|
MD5 | 9dcfdd616f120b0d115e0176a8e3d6a3 |
|
BLAKE2-256 | 348d436df1300452ef6991aa5013fc75356f14ccb94dfacedc58f2139e935358 |