Skip to main content

file-system utilities for lazy devs.

Project description

python-fsutil

file-system utilities for lazy devs.

Features

  • Simple and intuitive.
  • Zero dependencies.
  • Compatibile with python 2 and 3.
  • Well tested.

Index

Installation

pip install python-fsutil

Usage

Just import the main module and call its methods.

import fsutil

Methods

assert_dir

# Raise an OSError if the given path doesn't exist or it is not a directory.
fsutil.assert_dir(path)

assert_exists

# Raise an OSError if the given path doesn't exist.
fsutil.assert_exists(path)

assert_file

# Raise an OSError if the given path doesn't exist or it is not a file.
fsutil.assert_file(path)

assert_not_dir

# Raise an OSError if the given path is an existing directory.
fsutil.assert_not_dir(path)

assert_not_exists

# Raise an OSError if the given path already exists.
fsutil.assert_not_exists(path)

assert_not_file

# Raise an OSError if the given path is an existing file.
fsutil.assert_not_file(path)

clean_dir

# Clean a directory by removing empty sub-directories and/or empty files.
fsutil.clean_dir(path, dirs=True, files=True)

convert_size_bytes_to_string

# Convert the given size bytes to string using the right unit suffix.
size_str = fsutil.convert_size_bytes_to_string(size)

convert_size_string_to_bytes

# Convert the given size string to bytes.
size_bytes = fsutil.convert_size_string_to_bytes(size)

copy_dir

# Copy the directory at the given path and all its content to dest path.
# If overwrite is not allowed and dest path exists, an OSError is raised.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.copytree
fsutil.copy_dir(path, dest, overwrite=False, **kwargs)

copy_dir_content

# Copy the content of the directory at the given path to dest path.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.copytree
fsutil.copy_dir_content(path, dest, **kwargs)

copy_file

# Copy the file at the given path and its metadata to dest path.
# If overwrite is not allowed and dest path exists, an OSError is raised.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.copy2
fsutil.copy_file(path, dest, overwrite=False, **kwargs)

create_dir

# Create directory at the given path.
# If overwrite is not allowed and path exists, an OSError is raised.
fsutil.create_dir(path, overwrite=False)

create_file

# Create file with the specified content at the given path.
# If overwrite is not allowed and path exists, an OSError is raised.
fsutil.create_file(path, content='', overwrite=False)

create_zip_file

# Create zip file at path compressing directories/files listed in content_paths.
# If overwrite is allowed and dest zip already exists, it will be overwritten.
fsutil.create_zip_file(path, content_paths, overwrite=True, compression=zipfile.ZIP_DEFLATED)

delete_dir

# Alias for remove_dir.
fsutil.delete_dir(path)

delete_dirs

# Alias for delete_dirs.
fsutil.delete_dirs(*paths)

delete_file

# Alias for delete_file.
fsutil.delete_file(path)

delete_files

# Alias for delete_files.
fsutil.delete_files(*paths)

exists

# Check if a directory of a file exists at the given path.
value = fsutil.exists(path)

extract_zip_file

# Extract zip file at path to dest path.
# If autodelete, the archive will be deleted after extraction.
# If content_paths list is defined, only listed items will be extracted, otherwise all.
fsutil.extract_zip_file(path, dest, content_paths=None, autodelete=False)

get_dir_creation_date

# Get the directory creation date.
date = fsutil.get_dir_creation_date(path)

get_dir_creation_date_formatted

# Get the directory creation date formatted using the given format.
date_str = fsutil.get_dir_creation_date_formatted(path, format='%Y-%m-%d %H:%M:%S')

get_dir_last_modified_date

# Get the directory last modification date.
date = fsutil.get_dir_last_modified_date(path)

get_dir_last_modified_date_formatted

# Get the directory last modification date formatted using the given format.
date_str = fsutil.get_dir_last_modified_date_formatted(path, format='%Y-%m-%d %H:%M:%S')

get_dir_size

# Get the directory size in bytes.
size = fsutil.get_dir_size(path)

get_dir_size_formatted

# Get the directory size formatted using the right unit suffix.
size_str = fsutil.get_dir_size_formatted(path)

get_file_basename

# Get the file basename from the given path/url.
basename = fsutil.get_file_basename(path)

get_file_creation_date

# Get the file creation date.
date = fsutil.get_file_creation_date(path)

get_file_creation_date_formatted

# Get the file creation date formatted using the given format.
date_str = fsutil.get_file_creation_date_formatted(path, format='%Y-%m-%d %H:%M:%S')

get_file_extension

# Get the file extension from the given path/url.
extension = fsutil.get_file_extension(path)

get_file_hash

# Get the hash of the file at the given path using
# the specified algorithm function (md5 by default).
filehash = fsutil.get_file_hash(path, func='md5')

get_file_last_modified_date

# Get the file last modification date.
date = fsutil.get_file_last_modified_date(path)

get_file_last_modified_date_formatted

# Get the file last modification date formatted using the given format.
date_str = fsutil.get_file_last_modified_date_formatted(path, format='%Y-%m-%d %H:%M:%S')

get_file_size

# Get the file size in bytes.
size = fsutil.get_file_size(path)

get_file_size_formatted

# Get the file size formatted using the right unit suffix.
size_str = fsutil.get_file_size_formatted(path)

get_filename

# Get the filename from the given path/url.
filename = fsutil.get_filename(path)

is_dir

# Determine whether the specified path represents an existing directory.
value = fsutil.is_dir(path)

is_empty

# Determine whether the specified path represents an empty directory or an empty file.
value = fsutil.is_empty(path)

is_empty_dir

# Determine whether the specified path represents an empty directory.
value = fsutil.is_empty_dir(path)

is_empty_file

# Determine whether the specified path represents an empty file.
value = fsutil.is_empty_file(path)

is_file

# Determine whether the specified path represents an existing file.
value = fsutil.is_file(path)

join_filename

# Create a filename joining the file basename and the extension.
filename = fsutil.join_filename(basename, extension)

join_filepath

# Create a filepath joining the directory path and the filename.
filepath = fsutil.join_filepath(dirpath, filename)

join_path

# Create a path joining path and paths.
# If path is __file__ (or a .py file), the resulting path will be relative
# to the directory path of the module in which it's used.
path = fsutil.get_path(basefile, path)

list_dirs

# List all directories contained at the given directory path.
dirs = fsutil.list_dirs(path)

list_files

# List all files contained at the given directory path.
files = fsutil.list_files(path)

make_dirs

# Create the directories needed to ensure that the given path exists.
# If a file already exists at the given path an OSError is raised.
fsutil.make_dirs(path)

make_dirs_for_file

# Create the directories needed to ensure that the given path exists.
# If a directory already exists at the given path an OSError is raised.
fsutil.make_dirs_for_file(path)

move_dir

# Move an existing dir from path to dest directory.
# If overwrite is not allowed and dest path exists, an OSError is raised.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.move
fsutil.move_dir(path, dest, overwrite=False, **kwargs)

move_file

# Move an existing file from path to dest directory.
# If overwrite is not allowed and dest path exists, an OSError is raised.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.move
fsutil.move_file(path, dest, overwrite=False, **kwargs)

read_file

# Read the content of the file at the given path using the specified encoding.
content = fsutil.read_file(path, encoding='utf-8')

read_file_lines

# Read file content lines according to the given options.
content = fsutil.read_file_lines(path, strip_white=True, skip_empty=True, encoding='utf-8')

remove_dir

# Remove a directory at the given path and all its content.
# If the directory is removed with success returns True, otherwise False.
# More informations about kwargs supported options here:
# https://docs.python.org/3/library/shutil.html#shutil.rmtree
fsutil.remove_dir(path, **kwargs)

remove_dirs

# Remove multiple directories at the given paths and all their content.
fsutil.remove_dirs(*paths)

remove_file

# Remove a file at the given path.
# If the file is removed with success returns True, otherwise False.
fsutil.remove_file(path)

remove_files

# Remove multiple files at the given paths.
fsutil.remove_files(*paths)

rename_dir

# Rename a directory with the given name.
# If a directory or a file with the given name already exists, an OSError is raised.
fsutil.rename_dir(path, name)

rename_file

# Rename a file with the given name.
# If a directory or a file with the given name already exists, an OSError is raised.
fsutil.rename_file(path, name)

rename_file_basename

# Rename a file basename with the given basename.
fsutil.rename_file_basename(path, basename)

rename_file_extension

# Rename a file extension with the given extension.
fsutil.rename_file_extension(path, extension)

search_dirs

# Search for directories at path matching the given pattern.
dirs = fsutil.search_dirs(path, pattern)

search_files

# Search for files at path matching the given pattern.
files = fsutil.search_files(path, pattern)

split_filename

# Split a filename and returns its basename and extension.
basename, extension = fsutil.split_filename(path)

split_filepath

# Split a filename and returns its directory-path and filename.
dirpath, filename = fsutil.split_filepath(path)

split_path

# Split a path and returns its path-names.
path_names = fsutil.split_path(path)

write_file

# Write file with the specified content at the given path.
fsutil.write_file(path, content, append=False, encoding='utf-8')

Testing

# create python virtual environment
virtualenv testing_fsutil

# activate virtualenv
cd testing_fsutil && . bin/activate

# clone repo
git clone https://github.com/fabiocaccamo/python-fsutil.git src && cd src

# install requirements
pip install --upgrade pip
pip install -r requirements.txt

# run tests using tox
tox

# or run tests using unittest
python -m unittest

# or run tests using setuptools
python setup.py test

License

Released under MIT License.

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

python-fsutil-0.3.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_fsutil-0.3.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file python-fsutil-0.3.0.tar.gz.

File metadata

  • Download URL: python-fsutil-0.3.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.6

File hashes

Hashes for python-fsutil-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fffca21d0cd0c0b863ca59147c44576a7f8cac27b25be19899d12030e1689068
MD5 bea0d3418e8b16a808e8155e0c2a0ff8
BLAKE2b-256 21fb7d68a009d3e73790f8ede890b4172b3d4316870f1d2a48e3ae8400049597

See more details on using hashes here.

File details

Details for the file python_fsutil-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: python_fsutil-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.6

File hashes

Hashes for python_fsutil-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 559ef025101f19baf344f5031797955c750f5b64fa09e8ae878a65c26964735e
MD5 de971639c0e5655815186ad5f6249b57
BLAKE2b-256 8048634ae66ebf978945e39d9ce95ea309813dfd07df7f9a7dda8311a541f087

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page