music21.common.pathTools.cleanpath(path: Path, *, returnPathlib: Literal[None] = None) Path
music21.common.pathTools.cleanpath(path: str, *, returnPathlib: Literal[None] = None) str
music21.common.pathTools.cleanpath(path: str | Path, *, returnPathlib: Literal[True]) Path
music21.common.pathTools.cleanpath(path: str | Path, *, returnPathlib: Literal[False]) str

Normalizes the path by expanding ~user on Unix, ${var} environmental vars (is this a good idea?), expanding %name% on Windows, normalizing path names (Windows turns backslashes to forward slashes), and finally if that file is not an absolute path, turns it from a relative path to an absolute path.

v5 – returnPathlib – None (default) does not convert. False, returns a string, True, returns a pathlib.Path.

music21.common.pathTools.getCorpusContentDirs() list[str]

Get all dirs that are found in the CoreCorpus that contain content; that is, exclude dirs that have code or other resources.

>>> fp = common.getCorpusContentDirs()
>>> fp  # this list will be fragile, depending on composition of dirs
['airdsAirs', 'bach', 'beach', 'beethoven', 'chopin',
 'ciconia', 'corelli', 'cpebach',
 'demos', 'essenFolksong', 'handel', 'haydn', 'johnson_j_r', 'joplin', 'josquin',
 'leadSheet', 'liliuokalani', 'luca', 'lusitano',
 'miscFolk', 'monteverdi', 'mozart',
 'oneills1850', 'palestrina',
 'ryansMammoth', 'schoenberg', 'schubert', 'schumann_clara', 'schumann_robert',
 'theoryExercises', 'trecento', 'verdi', 'weber']

Make sure that all corpus data has a directoryInformation tag in CoreCorpus.

>>> cc = corpus.corpora.CoreCorpus()
>>> failed = []
>>> di = [d.directoryName for d in cc.directoryInformation]
>>> for f in fp:
...     if f not in di:
...         failed.append(f)
>>> failed
music21.common.pathTools.getCorpusFilePath() Path

Get the stored music21 directory that contains the corpus metadata cache.

>>> fp = common.getCorpusFilePath()
>>> == 'corpus' and == 'music21'
music21.common.pathTools.getMetadataCacheFilePath() Path

Get the stored music21 directory that contains the corpus metadata cache.

>>> fp = common.getMetadataCacheFilePath()
>>> == '_metadataCache' and == 'corpus'
music21.common.pathTools.getRootFilePath() Path

Return the root directory for music21 – outside the music21 namespace which has directories such as “dist”, “documentation”, “music21”

>>> fp = common.getRootFilePath()
>>> fp
music21.common.pathTools.getSourceFilePath() Path

Get the music21 directory that contains source files such as, etc. This is not the same as the outermost package development directory.

music21.common.pathTools.relativepath(path: StrOrPath, start: str | None = None) StrOrPath | str

A cross-platform wrapper for os.path.relpath(), which returns path if under Windows, otherwise returns the relative path of path.

This avoids problems under Windows when the current working directory is on a different drive letter from path.