music21.common.pathTools

Functions

music21.common.pathTools.cleanpath(path, *, returnPathlib=None)

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()

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 test 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
[]
Return type

List[str]

music21.common.pathTools.getCorpusFilePath()

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

>>> fp = common.getCorpusFilePath()
>>> fp.name == 'corpus' and fp.parent.name == 'music21'
True
Return type

pathlib.Path

music21.common.pathTools.getMetadataCacheFilePath()

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

>>> fp = common.getMetadataCacheFilePath()
>>> fp.name == '_metadataCache' and fp.parent.name == 'corpus'
True
Return type

pathlib.Path

music21.common.pathTools.getRootFilePath()

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

Return type

pathlib.Path

music21.common.pathTools.getSourceFilePath()

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

Return type

pathlib.Path

music21.common.pathTools.relativepath(path, start=None)

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.

Return type

str