Table of Contents
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.
- and hence dependent funtions like
stat
- and hence dependent functions like
lstat
,is_file
,is_dir
,exists
, etc.
- and hence dependent functions like
iterdir
mkdir
- NOTE: param
mode
has currently no effect, it falls back to755
!
- NOTE: param
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
pip install smb-path
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
).
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.