Skip to content

m-birke/smb-path

Repository files navigation

smb-path

PyPI - Version PyPI - Python Version License: MIT Test smb-path


Table of Contents

About

Many tools make use of pathlib.Path internally. This is a problem if the files are located on a fileshare. smb-path provides wrapper of Path which acts accordingly but using the SMB protocol for file operations instead of the local hosts file system. Atm. smb-path focuses on pure reading of the data. The SMB protocol implementation of smbprotocol is used.

All the utility functions of Path should work for SmbPath as well (like the / operator, with_suffix, parents, etc.).

Currently the following SMB dependent functions are implemented:

  • open
    • and hence dependent funtions like read_bytes, etc.
  • stat
    • and hence dependent functions like lstat, is_file, is_dir, exists, etc.
  • iterdir
  • mkdir
    • NOTE: param mode has currently no effect, it falls back to 755 !
  • rmdir
  • unlink
  • rename
  • symlink_to
  • replace

Missing operations (throwing exception) with current version (and questionable whether all of them will come) are:

  • touch
  • chmod
  • hardlink_to
  • glob
  • resolve
    • Resolves symlinks and makes relative paths absolute, latter is useless for SmbPath

Installation

pip install smb-path

Usage

smb-path just needs to be installed. After the installation, you just use Path() to instantiate a SmbPath. It is checked whether the provided path string applies to the regex pattern r"(//|\\\\)([a-z0-9]+)((\.[a-z0-9]+)*)(\.[a-z]+){1}".

The path string

  • must start with // or \\
  • must continue with a server name, a-z and 0-9 allowed, eg. filshr33
  • optionally an arbitrary number of periods separated by a ., a-z and 0-9 allowed, eg. .us.dieterscompany
  • must continue with an url closing with . then a-z, eg. .com
  • can contain trailing fileshare names, directories or files, eg. /myShare/myDir/myFile.txt

Hence //filshr33.us.dieterscompany.com/myShare/myDir/myFile.txt would be a valid SMB path.

If the pattern does not match, a Path object like you are used to it is returned (WindowsPath or PosixPath).

SMB Configuration

Use smbclient.ClientConfig to configure the SMB connection. Eg. smbclient.ClientConfig(username="itsme", password="myPW"). Refer to smbprotocol for further information.

Compatibility

smbprotocol is platform agnostic since it does not care about the path separator.

Tested with installation into a python -m venv virtual environment.

License

smb-path is distributed under the terms of the MIT license.

About

pathlib-like Path object for smb protocol

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages