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 |
|
BLAKE2b-256 | 348d436df1300452ef6991aa5013fc75356f14ccb94dfacedc58f2139e935358 |