music21.common.pathTools

Functions

music21.common.pathTools.cleanpath(path: Union[str, pathlib.Path], *, returnPathlib=None) → Union[str, pathlib.Path]

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', 'joplin', 'josquin',
 'leadSheet', 'luca', 'miscFolk', 'monteverdi', 'mozart', 'nottingham-dataset',
 'oneills1850', 'palestrina',
 'ryansMammoth', 'schoenberg', 'schubert', 'schumann', 'schumann_clara',
 '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() → pathlib.Path

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

>>> fp = common.getCorpusFilePath()
>>> fp.name == 'corpus' and fp.parent.name == 'music21'
True
music21.common.pathTools.getMetadataCacheFilePath() → pathlib.Path

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

>>> fp = common.getMetadataCacheFilePath()
>>> fp.name == '_metadataCache' and fp.parent.name == 'corpus'
True
music21.common.pathTools.getRootFilePath() → pathlib.Path

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

>>> fp = common.getRootFilePath()
>>> fp
PosixPath('/Users/florencePrice/git/music21')
music21.common.pathTools.getSourceFilePath() → pathlib.Path

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

music21.common.pathTools.relativepath(path: str, start: Optional[str] = None) → 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.