A Python library for sorting and organizing files into usable lists or dictionaries.
Project description
ArrangeLT
Overview
ArrangeLT is a Python library designed to help users quickly and efficiently organize files in a directory into lists and dictionaries. It provides functionality to sort files alphabetically, by extensions, and by size.
Installation
To install the library, you can use pip. Run:
pip install arrangelt
Usage
Here is a simple example of how to use the library:
Sorting Files Alphabetically
from arrangelt import alth_sort
# Sort files alphabetically in ascending order (default)
sorted_files = alth_sort("path/to/directory", style="asc", include_path=True)
print(sorted_files)
# Sort files alphabetically in descending order
sorted_files = alth_sort("path/to/directory", style="desc", include_path=False)
print(sorted_files)
Grouping Files by Extension
from arrangelt import ext_sort
# Group files by their extensions
grouped_files = ext_sort("path/to/directory", include_path=True)
print(grouped_files)
# Group files by their extensions, excluding specific types (e.g., .tmp and .log)
grouped_files = ext_sort("path/to/directory", exclude_types=[".tmp", ".log"], include_path=False)
print(grouped_files)
# Group files by their extensions, including only specific types (e.g., .txt and .csv)
grouped_files = ext_sort("path/to/directory", include_types=[".txt", ".csv"], include_path=True)
print(grouped_files)
Categorizing Files by Size
from arrangelt import size_sort
# Categorize files by size using default size categories
size_categories = {
"small": (0, 10 * 1024 * 1024), # Files smaller than 10 MB
"medium": (10 * 1024 * 1024, 100 * 1024 * 1024), # Files between 10 MB and 100 MB
"large": (100 * 1024 * 1024, 1 * 1024 * 1024 * 1024), # Files between 100 MB and 1 GB
"extra_large": (1 * 1024 * 1024 * 1024, float('inf')) # Files larger than 1 GB
}
categorized_files = size_sort("path/to/directory", size_categories=size_categories, include_path=True)
print(categorized_files)
# Example output:
# {
# "small": ["path/to/directory/file1.txt"],
# "medium": ["path/to/directory/file2.txt"],
# "large": ["path/to/directory/file3.txt"],
# "extra_large": ["path/to/directory/file4.txt"]
# }
Features
-
Alphabetical Sorting:
- Sort files in ascending or descending order by their names.
- Option to include or exclude the full file path in the output.
-
Extension Grouping:
- Group files by their extensions.
- Option to include or exclude the full file path in the output.
- Include only specific file types or exclude specific file types.
-
Size Categorization:
- Categorize files into size-based groups (e.g., small, medium, large).
- Fully customizable size categories.
- Option to include or exclude the full file path in the output.
-
Recursive Behavior:
- Allows for the specification of a depth for a recursive search. If left alone no subfolders are searched, 0 = Unlimited depth, 1 = Root and immediate sub folders, 2 = Root plus a depth of two sub folders, and so on.
-
Error Handling:
- Provides clear error messages for invalid paths, permissions, and other issues.
-
Non-File Handling:
- Automatically ignores non-file items (e.g., directories, symbolic links) when sorting or categorizing.
License
This project is licensed under the Apache-2.0 License - see the LICENSE file for details.
Changelog
[v0.3.1] - 02-04-2025
Added
- Added support for recursive file searching with a
depthparameter foralth_sort,ext_sort, andsize_sort.
Changed
- Replaced
globwithos.scandirfor better control over file traversal.
[v0.2.0] - 02-04-2025
Added
- Introduced the
size_sortfunction to categorize files based on their sizes.
[v0.1.0] - 01-04-2025
Added
- Initial release with
alth_sortfor alphabetical sorting of files. - Added
ext_sortfor grouping files by their extensions.
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arrangelt-0.3.1.tar.gz.
File metadata
- Download URL: arrangelt-0.3.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b701854f1c3cba6d840e8069d603449445ba4d6abf8f8cc9c411adca6a6cdfba
|
|
| MD5 |
0b00315c35a560ac0e85780760b682a0
|
|
| BLAKE2b-256 |
18eea0250200861ac0afa61e826e29150d286442053d61db2b5b017d3ffcdb0f
|
File details
Details for the file arrangelt-0.3.1-py3-none-any.whl.
File metadata
- Download URL: arrangelt-0.3.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7edbd98c1a630fff08d7957c46935eba7ae59eb482f42da3f35ae5a6debcb94
|
|
| MD5 |
d12bcdd03534d27ab0aeacbb0fc34da3
|
|
| BLAKE2b-256 |
05ea7a5c10b48ef55da66fac67674196220e5018d3f81eac050fd55b68b7bee2
|