cfdm.dirname

cfdm.dirname(path, normalise=False, uri=None, isdir=False, sep=False)[source]

Return the directory of a path.

New in version (cfdm): 1.12.0.0

Parameters
path: str

The name of the path.

normalise: bool, optional

If True then normalise the path by resolving it to an absolute path. If False (the default) then no normalisation is done.

uri: None or bool, optional

If True then the returned directory will begin with a URI scheme component followed by a : character, such as file://data/file.nc, https://remote/data/file.nc, etc.). If False then the returned directory will not begin with a URI scheme component. If None (the default) then the returned directory will begin with a URI scheme component if the input path does.

isdir: bool, optional

Set to True if path represents a directory, rather than a file.

sep: bool, optional

Set to True to add a trailing path separator to the returned directory.

Returns
str

The directory of the path.

Examples

>>>
>>> import os
>>> os.getcwd()
'/data/archive'
>>>
>>> cfdm.dirname('file.nc')
'/data/archive'
>>> cfdm.dirname('file.nc', normalise=True)
'/data/archive'
>>> cfdm.dirname('file.nc', normalise=True, uri=True)
'file:///data/archive'
>>> cfdm.dirname('file.nc', normalise=True, uri=False)
'/data/archive'
>>> cfdm.dirname('file.nc', normalise=True, sep=True)
'/data/archive/'
>>>
>>> cfdm.dirname('model/file.nc')
'model'
>>> cfdm.dirname('model/file.nc', normalise=True)
/data/archive/model'
>>> cfdm.dirname('model/file.nc', normalise=True, uri=True)
'file:///data/archive/model'
>>> cfdm.dirname('model/file.nc', normalise=True, uri=False)
/data/archive/model'
>>>
>>> cfdm.dirname('../file.nc')
'..'
>>> cfdm.dirname('../file.nc', normalise=True)
'/data'
>>> cfdm.dirname('../file.nc', normalise=True, uri=True)
'file:///data'
>>> cfdm.dirname('../file.nc', normalise=True, uri=False)
'/data'
>>>
>>> cfdm.dirname('/model/file.nc')
'/model'
>>> cfdm.dirname('/model/file.nc', normalise=True)
'/model'
>>> cfdm.dirname('/model/file.nc', normalise=True, uri=True)
'file:///model'
>>> cfdm.dirname('/model/file.nc', normalise=True, uri=False)
'/model'
>>>
>>> cfdm.dirname('')
''
>>> cfdm.dirname('', normalise=True)
'/data/archive'
>>> cfdm.dirname('', normalise=True, uri=True)
'file:///data/archive'
>>> cfdm.dirname('', normalise=True, uri=False)
'/data/archive'
>>>
>>> cfdm.dirname('https:///data/archive/file.nc')
'https:///data/archive'
>>> cfdm.dirname('https:///data/archive/file.nc', normalise=True)
'https:///data/archive'
>>> cfdm.dirname('https:///data/archive/file.nc', normalise=True, uri=True)
'https:///data/archive'
>>> cfdm.dirname('https:///data/archive/file.nc', normalise=True, uri=False)
ValueError: Can't set uri=False for path='https:///data/archive/file.nc'
>>>
>>> cfdm.dirname('file:///data/archive/file.nc')
'file:///data/archive'
>>> cfdm.dirname('file:///data/archive/file.nc', normalise=True)
'file:///data/archive'
>>> cfdm.dirname('file:///data/archive/file.nc', normalise=True, uri=True)
'file:///data/archive'
>>> cfdm.dirname('file:///data/archive/file.nc', normalise=True, uri=False)
'/data/archive'
>>>
>>> cfdm.dirname('file:///data/archive/../file.nc')
'file:///data/archive/..'
>>> cfdm.dirname('file:///data/archive/../file.nc', normalise=True)
'file::///data'
>>> cfdm.dirname('file:///data/archive/../file.nc', normalise=True, uri=True)
'file::///data'
>>> cfdm.dirname('file:///data/archive/../file.nc', normalise=True, uri=False)
'/data'