| Version | |
| Project | |
| CI | |
| Code |
pathlib-like Path object for smb protocol
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:
glob(experimental)iterdirmkdir- NOTE: param
modehas currently no effect, it falls back to755!
- NOTE: param
open- and hence dependent funtions like
read_bytes, etc.
- and hence dependent funtions like
stat- and hence dependent functions like
lstat,is_file,is_dir,exists, etc.
- and hence dependent functions like
renamereplaceresolve- Resolves symlinks and makes relative paths absolute (latter is useless for SmbPath)
- SMB Paths are always absolute
- Currently just returns itself as is
rmdirsymlink_tounlink
Missing operations (throwing exception) with current version (and questionable whether all of them will come) are:
chmodhardlink_totouch
pip install smb-pathsmb-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,0-9and_,-allowed, eg.filshr33 - optionally an arbitrary number of periods separated by a
.,a-z,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).
Use smbclient.ClientConfig to configure the SMB connection. Eg. smbclient.ClientConfig(username="itsme", password="myPW"). Refer to smbprotocol for further information.
smbprotocol is platform agnostic since it does not care about the path separator.
Tested with installation into a python -m venv virtual environment.
smb-path is distributed under the terms of the MIT license.