Feature request #935915: Add os.path.devnull.
diff --git a/Lib/macpath.py b/Lib/macpath.py
index 695fac9..1d3fa56 100644
--- a/Lib/macpath.py
+++ b/Lib/macpath.py
@@ -8,7 +8,7 @@
            "getatime","getctime", "islink","exists","isdir","isfile",
            "walk","expanduser","expandvars","normpath","abspath",
            "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
-           "realpath","supports_unicode_filenames"]
+           "devnull","realpath","supports_unicode_filenames"]
 
 # strings representing various path-related bits and pieces
 curdir = ':'
@@ -18,6 +18,7 @@
 pathsep = '\n'
 defpath = ':'
 altsep = None
+devnull = 'Dev:Null'
 
 # Normalize the case of a pathname.  Dummy in Posix, but <s>.lower() here.
 
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 687d885..549c35e 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -14,7 +14,7 @@
            "getatime","getctime", "islink","exists","isdir","isfile","ismount",
            "walk","expanduser","expandvars","normpath","abspath","splitunc",
            "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
-           "realpath","supports_unicode_filenames"]
+           "devnull","realpath","supports_unicode_filenames"]
 
 # strings representing various path-related bits and pieces
 curdir = '.'
@@ -29,6 +29,7 @@
 elif 'os2' in sys.builtin_module_names:
     # OS/2 w/ VACPP
     altsep = '/'
+devnull = 'nul'
 
 # Normalize the case of a pathname and map slashes to backslashes.
 # Other normalizations (such as optimizing '../' away) are not done
diff --git a/Lib/os.py b/Lib/os.py
index c037ea9..5b79981 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -12,6 +12,7 @@
   - os.pathsep is the component separator used in $PATH etc
   - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
   - os.defpath is the default search path for executables
+  - os.devnull is the file path of the null device ('/dev/null', etc.)
 
 Programs that import and use 'os' stand a better chance of being
 portable between different platforms.  Of course, they must then
@@ -28,7 +29,7 @@
 
 # Note:  more names are added to __all__ later.
 __all__ = ["altsep", "curdir", "pardir", "sep", "pathsep", "linesep",
-           "defpath", "name", "path"]
+           "defpath", "name", "path", "devnull"]
 
 def _get_exports_list(module):
     try:
@@ -129,7 +130,8 @@
     raise ImportError, 'no os specific module found'
 
 sys.modules['os.path'] = path
-from os.path import curdir, pardir, sep, pathsep, defpath, extsep, altsep
+from os.path import curdir, pardir, sep, pathsep, defpath, extsep, altsep, \
+    devnull
 
 del _names
 
diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py
index 09982aa..9f8a1dd 100644
--- a/Lib/os2emxpath.py
+++ b/Lib/os2emxpath.py
@@ -13,7 +13,7 @@
            "getatime","getctime", "islink","exists","isdir","isfile","ismount",
            "walk","expanduser","expandvars","normpath","abspath","splitunc",
            "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
-           "realpath","supports_unicode_filenames"]
+           "devnull","realpath","supports_unicode_filenames"]
 
 # strings representing various path-related bits and pieces
 curdir = '.'
@@ -23,6 +23,7 @@
 altsep = '\\'
 pathsep = ';'
 defpath = '.;C:\\bin'
+devnull = 'nul'
 
 # Normalize the case of a pathname and map slashes to backslashes.
 # Other normalizations (such as optimizing '../' away) are not done
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index dcd5a63..c117c89 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -19,7 +19,7 @@
            "walk","expanduser","expandvars","normpath","abspath",
            "samefile","sameopenfile","samestat",
            "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
-           "realpath","supports_unicode_filenames"]
+           "devnull","realpath","supports_unicode_filenames"]
 
 # strings representing various path-related bits and pieces
 curdir = '.'
@@ -29,6 +29,7 @@
 pathsep = ':'
 defpath = ':/bin:/usr/bin'
 altsep = None
+devnull = '/dev/null'
 
 # Normalize the case of a pathname.  Trivial in Posix, string.lower on Mac.
 # On MS-DOS this may also turn slashes into backslashes; however, other
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 4cdc29d..b05bffc 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -334,6 +334,14 @@
 
         os.removedirs(path)
 
+class DevNullTests (unittest.TestCase):
+    def test_devnull(self):
+        f = file(os.devnull, 'w')
+        f.write('hello')
+        f.close()
+        f = file(os.devnull, 'r')
+        assert f.read() == ''
+        f.close()
 
 def test_main():
     test_support.run_unittest(
@@ -342,6 +350,7 @@
         EnvironTests,
         WalkTests,
         MakedirTests,
+        DevNullTests,
     )
 
 if __name__ == "__main__":