This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: os.path.dirname returns empty string instead of "." when file is in current directory
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.6
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: Nosy List: Chaitanya Mannem, eric.smith, eryksun, serhiy.storchaka
Priority: normal Keywords:

Created on 2016-02-24 17:46 by Chaitanya Mannem, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (4)
msg260821 - (view) Author: Chaitanya Mannem (Chaitanya Mannem) Date: 2016-02-24 17:46
Don't know if this is for windows compatibility or whatever but I think it makes more sense if os.path.dirname would return "." if the file passed in was in the current directory.
msg260823 - (view) Author: Eric V. Smith (eric.smith) * (Python committer) Date: 2016-02-24 18:07
Changing to just 3.6, since that's the only place we could change the behavior.

That said, I'd be -1 on making such a change. It would no doubt break some existing code.
msg260824 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-02-24 18:16
This is documented behavior and changing this will break existing code (for example see the implementation of glob.glob()).

If you need this, a workaround is simple and idiomatic: ``os.path.dirname(path) or os.curdir``.
msg260825 - (view) Author: Eryk Sun (eryksun) * (Python triager) Date: 2016-02-24 18:21
os.path.dirname is documented as the first element of os.path.split, which in turn is documented to be empty when there's no slash in the path. 

An empty string is treated as the current directory by os.path.abspath. This is in line with an empty element in the PATH environment variable. Also, Python's sys.path uses an empty string for the current directory. If you want a dot for display and logging purposes, normalize via os.path.normpath:

    >>> os.path.normpath('')
    '.'
History
Date User Action Args
2022-04-11 14:58:27adminsetgithub: 70616
2016-02-24 18:21:34eryksunsetnosy: + eryksun
messages: + msg260825
2016-02-24 18:16:00serhiy.storchakasetstatus: open -> closed

nosy: + serhiy.storchaka
messages: + msg260824

resolution: rejected
stage: resolved
2016-02-24 18:07:15eric.smithsetversions: - Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5
nosy: + eric.smith

messages: + msg260823

type: enhancement
2016-02-24 17:46:08Chaitanya Mannemcreate